CMakeツールチェインの使い方
以前CMakeのツールチェイン機能を扱う際の注意点を書きましたが、そもそもツールチェイン自体の記事が見当たらなかったので基本的な使用方法を書いておきます。
ツールチェインとは
CMakeには外部からビルド設定を組み込むためのcmake-toolchainsという機能があります。
たとえば、
- Visual Studioではプロジェクト設定に予め
/MT
や、/MTd
を設定したい - CMakeで生成する依存ライブラリは特定の環境でパス環境変数を要求するが、定義したくないので直接プロジェクトファイルに埋め込みたい
- 環境に応じて対象となるコンパイラの種類及びバージョンを細かく指定したい
のような状況は頻繁に発生するでしょう。これらの設定はcmakeコマンドのオプションじゃ賄い切れない事が多いです。
そこでツールチェインの機能を利用することにより、クロスプラットフォームを対象としたプロジェクトの生成において、各プラットフォーム間で生まれる細かい要求に対応することが出来ます。
使い方
ツールチェインは定義した.cmake
ファイルを-DCMAKE_TOOLCHAIN_FILE
オプションによって渡すことにより機能します。
cmake . -DCMAKE_TOOLCHAIN_FILE=/path/to/file.cmake
ここで渡す.cmake
ファイルに各環境ごとの設定を書き加えるだけでCMake側が設定してくれるので楽ちんです。
設定方法
.cmake
ファイルなので、そのままCMakeの文法を扱うことが出来ます。ここで例を見てみましょう
# 対象は環境変数HOGE_PATHを要求しているが、環境変数を汚したくないので直接埋め込む
include_directories(SYSTEM ${HOGE_PATH})
# 対象はHOGEライブラリをサポートしているため使用したい。そのための変数を定義する
add_definitions(-DUSE_HOGE)
# 対象のCMake設定では/MDdと/MDが指定されるため、/MTdと/MTに直したい
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MTd" CACHE STRING "description")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MT" CACHE STRING "description")
上の例では3つの要求に対応する設定を記述してみました。書き方は普段書くCMakeの設定方法とほぼ一緒なので何も考えることはないですね。ここに記述した設定は、基本的には優先して扱われるようになっているようです(ドキュメントを参照してもぱっと見見当たらないので不確定ですが)。
以前の記事でも解説したように、set()
で設定する変数にはCACHE
指定をつけるのだけは忘れないようにして下さい。
ここで書いた設定はWindows(Visual Studio)を想定したものでしたが、各プラットフォームごとにツールチェイン用ファイルを用意してもいいですし、CMAKE_SYSTEM_NAME
やCAMEK_CXX_COMPILER_ID
のような変数を判定して分岐した設定を書いても良いでしょう。
Author And Source
この問題について(CMakeツールチェインの使い方), 我々は、より多くの情報をここで見つけました https://qiita.com/lapis_tw/items/953f4a4031922462dacc著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .