【コンパイル】gcc make cmake Makefile CMakeList.txtの関係と使い方

関係

1gccはコンパイラですソースコードを実行可能ファイルに変換します。

プログラムにソース ファイルが 1 つしかない場合は、gcc コマンドを直接使用してコンパイルできます。しかし、プログラムに多数のソースファイルが含まれており、gcc コマンドを使用してそれらを 1 つずつコンパイルすると混乱しやすく、作業負荷が高くなるため、make ツールが登場しました。

2makeはバッチ処理ツールですプロジェクト全体を通じてコン​​パイル プロセスを管理します。メイクファイルに基づいて作成されます。

3は、 make コマンドに使用されるmakefileテキスト ファイルです一連のルールとコマンドが含まれています。make ツールは、makefile 内のルールを読み取り、どのファイルを再コンパイルする必要があるか、またコンパイル プロセスを完了するためにどのコマンドを実行するかを決定します。

単純なプロジェクトではメイクファイルを手書きで作成できる場合もありますが、プロジェクトが非常に大規模になるとメイクファイルを手書きするのも非常に面倒ですし、プラットフォームが変わると再度メイクファイルを修正する必要があります。このとき、Cmakeツールが登場しました。

4はクロスプラットフォーム ビルド ツールcmakeですcmake は、make で使用するための makefile をより簡単に生成できます。

5 はcmakelistcmake をコマンドするために使用されるテキスト ファイルです

画像-20230726151254616

参考URL:http://t.csdn.cn/iNMcN



2gcc

インストール:

sudo apt update
sudo apt install build-essential gdb

2.1 コンパイルプロセス

  • 前処理-E .i 展開マクロ
  • コンパイル -S .s c -> アセンブル
  • アセンブリ-c .o アセンブリ->バイナリ
  • リンク -o bin ファイル

画像-20230731165711403

2.2 コンパイルパラメータ

1 -g デバッグ情報付き

2 -O2 ソースコードを最適化します。

3 -l -L はライブラリ ファイルを指定します | ライブラリ ファイルのパスを指定します

4 -I ヘッダー ファイルの検索ディレクトリを指定します

5 - 壁には警告メッセージが印刷されます

6 -w は警告メッセージをオフにします

7 -std=c++11 コンパイル標準を設定します

8 -o は出力ファイル名を指定します

9 -D マクロを定義します

画像-20230731165958597

画像-20230731170020543

画像-20230731170034849

2.3 静的ライブラリと動的ライブラリ

1 つのサフィックス
  • 静的ライブラリのサフィックス名:.a
  • 動的ライブラリのサフィックス名:.so
2 つながりと違い
  • 静的ライブラリはコンパイル中にターゲット プログラムにリンクされ、プログラムの一部になります。利点は、実行可能ファイルが実行時に外部ライブラリに依存しないことです。デメリットはファイルサイズが大きくなることです。
  • ダイナミック ライブラリは最終的な実行可能ファイルにコピーされないため、メモリと互換性の問題が節約されます。

2.4 GDB デバッガ

  • インストール

    sudo apt update
    sudo apt install build-essential gdb
    
  • -g を使用してコンパイルする必要がある

    gcc -g main.c -o main

1 よく使われるコマンド

画像-20230726212901303

画像-20230726212915786

三メイク、メイクファイル

4 つの cmake、cmakelist

4.1 文法的特徴

画像-20230728110412455

4.2 重要なコマンド

# 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})

画像-20230731165308494

画像-20230731165343782

画像-20230731165410438

4.2 重要な変数

画像-20230731165534974

画像-20230731165553971

4.3 コンパイルプロセス

  • 1 CMakeLists.txtを書き込む
  • 2 コマンドを実行します: cmakeメイクファイルを生成するパス
  • 3 コマンドを実行:make

4.4 2つの施工方法

画像-20230731153412517

FiveVscode

5.0 よく使用されるショートカット キー

ショートカットキー 関数
行コメント Ctrl+/
コメントをブロックする Ctrl+Shift+A
現在の行を移動する alt+上/下
コマンドパネル Ctrl+Shift+P
ファイルに移動 Ctrl+P
行に移動 Ctrl+G
ターミナルを開く Ctrl+~
変数の名前変更 F2
サイドバーを開く/閉じる Ctrl+B
エディターの分割 Ctrl+\
サムネイル メニューバー: 表示/外観
コードのインデント Ctrl+[/]
コードのフォーマット Ctrl+Shift+I
下に行を挿入 Ctrl+Enter
定義に移動 F12
編集領域の拡大および縮小 Ctrl+ -/+

5.1 インターフェース

4 つの主要な領域: メニュー バー、サイドバー、編集領域、ステータス バー

画像-20230728095310489

5.2 プラグイン

画像-20230731164620130

5.3 .vscode フォルダー

1 launch.json
2 タスク.json

おすすめ

転載: blog.csdn.net/weixin_44029896/article/details/132026326