CMake

CMake + Visual C++で、main関数を呼ばせる

OpenGLのようなプロジェクトでは、Windows上でコマンドプロンプトを表示させないためにexecutableにWIN32を付ける。 しかしWinMain()関数が呼ばれては困るので、main()関数が呼ばれるよう、以下のようにリンクフラグを追加する。 add_executable(MyApp main.…

CMakeの実行を、エラーメッセージ付きで中断する

message()コマンドの先頭にFATAL_ERRORを付ける。 message(FATAL_ERROR "hogehoge error message") 参照 message - CMake documentation

変数が定義されているかを判定する

CMakeファイル内で、変数が定義されているかを調べるには、以下のようにする: if (VARIABLE) ... endif () if (${VARIABLE})ではない。 このような定義判定は、cmakeコマンドを呼び出す際の変数定義のために使用する: cmake .. -DVARIABLE=1 参照 cmake DE…

CMakeによって生成されるVisual C++のプロジェクトに、ディレクトリのフィルタを追加する

source_group()命令を使う。 source_group(フィルタ名 FILES ファイルリスト) source_group(フィルタ名 REGULAR_EXPRESSION 正規表現で書かれたファイルリスト) 追記(2014/5/20) サブディレクトリをフィルタ名に設定する場合は、ディレクトリ区切り文字を「\…

CMakeによって生成されるVisual C++プロジェクトの構成

CMake Visual C++ project ソリューション(.sln) executable 実行ファイルプロジェクト(.vcxproj) library スタティックライブラリプロジェクト(.vcxproj) project内には、複数のexecutable/libraryを追加できる。Visual Studioでこのcmakeを実行すると、複…

出力ディレクトリを指定する

CMakeで出力ディレクトリを指定するには、以下の変数にディレクトリを指定する必要がある。 実行ファイルの場合: set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ../../../libs) スタティックライブラリの場合(2つ両方): set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ../../.…

CMakeの処理を切り出す

include(../path/myproject.cmake) のようにinclude命令を使うと、他の.cmakeファイルに書かれた内容を読み込んで実行できる。 用例: 共通利用する変数を定義する 共通利用するインクルード/ライブラリディレクトリを設定する 共通利用する関数・マクロを…

実行ファイルのターゲットプロパティ

Visual C++環境向けに実行ファイルをビルドする場合、 add_executable(exe_name ${sources}) とするとコマンドライン(コンソール)プロジェクトになり、 add_executable(exe_name WIN32 ${sources}) とするとWin32のプロジェクトになる。main()の代わりにWinM…

リンクディレクトリの指定

CMake 2.8で検証 link_directoriesに相対パスを指定するのは廃止された。絶対パスでリンクディレクトリのパスを通す必要がある。 link_directoriesに環境変数のパスを使って指定する場合は、link_directories($ENV{MYPROJECT_ROOT}/libs)のように、環境変数…