[Compile] gcc make cmake Makefile Relation et utilisation de CMakeList.txt

une relation

1 gccest un compilateur . Convertissez le code source en fichiers exécutables.

Lorsque votre programme ne possède qu’un seul fichier source, vous pouvez directement utiliser la commande gcc pour le compiler. Mais lorsque votre programme contient de nombreux fichiers sources et que vous utilisez la commande gcc pour les compiler un par un, vous serez facilement confus et aurez une lourde charge de travail, c'est pourquoi l'outil make est apparu.

2 makeest un outil de traitement par lots . Gérer le processus de compilation tout au long du projet. Il est basé sur le makefile.

3 makefileest un fichier texte utilisé pour commander make . Il contient une série de règles et de commandes. L'outil make lit les règles du makefile pour déterminer quels fichiers doivent être recompilés et quelles commandes exécuter pour terminer le processus de compilation.

Le makefile peut être écrit à la main dans certains projets simples, mais lorsque le projet est très volumineux, l'écriture manuscrite du makefile est également très gênante, et si la plate-forme est modifiée, le makefile devra être à nouveau modifié. A cette époque, l'outil Cmake est apparu.

4 cmakeest un outil de construction multiplateforme . cmake peut générer plus facilement des makefiles à utiliser par make.

5 cmakelistest un fichier texte utilisé pour commander cmake .

image-20230726151254616

URL de référence : http://t.csdn.cn/iNMcN



2 gcc

Mise en place :

sudo apt update
sudo apt install build-essential gdb

2.1 Processus de compilation

  • Macro d'extension Prétraitement-E .i
  • Compiler -S .s c->Assembler
  • Assemblage-c .o Assemblage->Binaire
  • lien -o fichier bin

image-20230731165711403

2.2 Paramètres de compilation

1 -g avec les informations de débogage

2 -O2 optimiser le code source

3 -l -L spécifie le fichier de bibliothèque | spécifie le chemin du fichier de bibliothèque

4 -I précise le répertoire de recherche du fichier d'en-tête

5 -Le mur imprime des messages d'avertissement

6 -w désactive les messages d'avertissement

7 -std=c++11 Définir la norme de compilation

8 -o spécifie le nom du fichier de sortie

9 -D définit la macro

image-20230731165958597

image-20230731170020543

image-20230731170034849

2.3 Bibliothèques statiques et bibliothèques dynamiques

1 suffixe
  • Nom du suffixe de la bibliothèque statique :.a
  • Nom du suffixe de la bibliothèque dynamique :.so
2 Connexions et différences
  • Les bibliothèques statiques sont liées au programme cible lors de la compilation et font partie du programme. L'avantage est que le fichier exécutable ne dépend pas de bibliothèques externes lors de son exécution. L'inconvénient est que la taille du fichier est plus grande.
  • La bibliothèque dynamique ne sera pas copiée dans le fichier exécutable final, économisant ainsi de la mémoire et des problèmes de compatibilité.

2.4 Débogueur GDB

  • Installer

    sudo apt update
    sudo apt install build-essential gdb
    
  • Besoin de compiler avec -g

    gcc -g main.c -o principal

1 Commandes couramment utilisées

image-20230726212901303

image-20230726212915786

C'est make、makefile

Quatre cmake, cmakelist

4.1 Caractéristiques grammaticales

image-20230728110412455

4.2 Commandes importantes

# CMake最小版本要求为2.8.3
cmake_minimum_required(VERSION 2.8.3)

# 指定工程名为HELLOWORLD
project(HELLOWORLD)

# 定义SRC变量,其值为sayhello.cpp hello.cpp
set(SRC sayhello.cpp hello.cpp)

# 将/usr/include/myincludefolder 和 ./include 添加到头文件搜索路径
include_directories(/usr/include/myincludefolder ./include)

# 将/usr/lib/mylibfolder 和 ./lib 添加到库文件搜索路径
link_directories(/usr/lib/mylibfolder ./lib)

# 通过变量 SRC 生成 libhello.so 共享库
add_library(hello SHARED ${SRC})

# 添加编译参数 -Wall -std=c++11 -O2
add_compile_options(-Wall -std=c++11 -O2)

# 编译main.cpp生成可执行文件main
add_executable(main main.cpp)

# 将hello动态库文件链接到可执行文件main
target_link_libraries(main hello)

# 添加src子目录,src中需有一个CMakeLists.txt
add_subdirectory(src)

# 定义SRC变量,其值为当前目录下所有的源代码文件
aux_source_directory(. SRC)
    
# 编译SRC变量所代表的源代码文件,生成main可执行文件
add_executable(main ${SRC})

image-20230731165308494

image-20230731165343782

image-20230731165410438

4.2 Variables importantes

image-20230731165534974

image-20230731165553971

4.3 Processus de compilation

  • 1 Écrivez CMakeLists.txt
  • 2 Exécutez la commande : cmake chemin pour générer le makefile
  • 3 Exécuter la commande : make

4.4 Deux méthodes de construction

image-20230731153412517

CinqVscode

5.0 Touches de raccourci couramment utilisées

touche de raccourci Fonction
Commentaires de ligne ctrl+/
bloquer les commentaires ctrl+maj+A
Déplacer la ligne actuelle alt+haut/bas
panneau de commande ctrl+maj+p
Aller au dossier ctrl+p
Aller à la rangée ctrl+g
Terminal ouvert ctrl+~
renommer la variable F2
Ouvrir/fermer la barre latérale ctrl+B
Division de l'éditeur ctrl+\
vignette Barre de menu : Affichage/Apparence
Indentation du code ctrl+[/]
Formatage des codes ctrl+maj+I
Insérez une ligne ci-dessous ctrl+entrée
passer à la définition F12
Zoom avant et arrière sur la zone d'édition ctrl+ -/+

5.1 Interfaces

Quatre zones principales : barre de menu, barre latérale, zone d'édition, barre d'état

image-20230728095310489

5.2 Plug-ins

image-20230731164620130

5.3 Dossier .vscode

1 lancement.json
2 tâche.json

Je suppose que tu aimes

Origine blog.csdn.net/weixin_44029896/article/details/132026326
conseillé
Classement