CMake学習ノート(1)——CMakeでhello worldプログラムをコンパイルする

1936 ワード

CMakeはmakeよりも高度なコンパイル構成ツールであり、異なるプラットフォーム、異なるコンパイラに基づいて、対応するMakefileまたはvcprojプロジェクトを生成することができます.CMakeListsを作成する.txtは、生成されたMakefileを制御し、コンパイルプロセスを制御することができる.CMakeが自動的に生成するMakefileは、makeコマンドによってプロジェクト生成対象ファイルを構築するだけでなく、インストール(make install)、インストールをテストするプログラムが正しく実行できるかどうか(make test、またはctest)、現在のプラットフォームのインストールパッケージ(make package)、生成ソースパッケージ(make package_source)、Dashboard表示データを生成してアップロードするなどの高度な機能もサポートする.txtで簡単に構成すれば、テストの例を書くなど、複雑な機能を多く完成することができます.
ネストディレクトリがある場合、サブディレクトリの下に独自のCMakeListsを持つことができる.txt.
要するに、CMakeは非常に強力なコンパイル自動構成ツールであり、各種プラットフォームをサポートしており、KDEもそれをコンパイルしており、興味のあるものは試してみることができます.
t 1というプロジェクトを作成します.
作成main.cファイル
#include 

int main()
{
	printf("hello world
"); return 0; }

CMakeListsを作成する.txtファイル:
PROJECT(HELLO)
SET(SRC_LIST main.c)
MESSAGE(STATUS "THIS IS BINARY DIR " ${HELLO_BINARY_DIR})
MESSAGE(STATUS "THIS IS SOURCE DIR " ${HELLO_SOURCE_DIR})
ADD_EXECUTABLE(hello ${SRC_LIST})

説明:
PROJECT:プロジェクト名を定義します.この命令は2つのcmake変数を暗黙的に定義した:BINARY_DIRおよび_SOURCE_DIR、この2つの変数は、コンパイル後のバイナリファイルのパスとエンジニアリングソースファイルのパスをそれぞれ指定します.ここにいる時BINARY_DIRとHELLO_SOURCE_DIR、直接PROJECT_を使うことができますBINARY_DIR,PROJECT_SOURCE_DIR、このように工事のファイル名を変えてこれらの変数を修正する必要はありません;
SET:変数の定義に使用します.ここではSRC_LIST;
MESSAGE:端末でユーザ情報に印刷するためのもの;
ADD_EXECUTABLE:変数を参照するために${}を使用する実行可能ファイルを生成します.
次に構築を開始します.
cmake .
make

helloという実行可能ファイルを生成し、実行します.
./hello

出力:
hello world

前述の内部コンパイルは、直接プロジェクトディレクトリの下で構築され、生成された中間ファイルもプロジェクトディレクトリの下にあります.これは混乱しています.以下、外部コンパイルについて説明します.
buildというディレクトリを作成します.
プロジェクト全体のディレクトリ構造は次のとおりです.
t1
├── build
├── CMakeLists.txt
└── main.c

ビルドディレクトリのように構築するには、次の手順に従います.
cmake ..
make
..現在のディレクトリを表す親ディレクトリ.
これにより、構築後に生成されたすべてのファイルがbuildディレクトリに表示されます.