どのようにcmakeで文字列を連結しますか
How Do You Concatenate String Cmake
解決:
'$ {src} .out'は正常に機能するはずなので、次のように書くことができます。
set(NAME '$ {src} .out')そして使用する
必要な場所に$ {NAME}。
3つの典型的なCMake文字列連結方法
この特定の質問への回答は、セットまたは
文字列、3番目の可能性があります
文字列を任意の文字で結合する場合はリストします。
設定()
bashのように文字列を組み合わせるだけです
set(FILE file)set(FILE_TXT $ {FILE} .txt)message(STATUS'FILE_TXT:$ {FILE_TXT} ')文字列(CONCAT)
すべての入力引数を連結し、結果を名前付き出力変数に格納します。
string(CONCAT [...])
string(CONCAT MULTI'xxxx''YYYY''xxxx ')message(STATUS'MULTI:$ {MULTI}')リスト(APPEND)
リストに要素を追加します。
list(APPEND [...])
コンパイラフラグのようなものに関しては、これは選択のツールです。 CMakeのリストはセミコロンで区切られた文字列であり、引用すると、リストがセミコロンで結合されます。
list(APPEND FLAGS'-D option1 ')list(APPEND FLAGS'-D option2')list(APPEND FLAGS'-D option3 ')list(JOIN FLAGS' 'FLAGS)message(STATUS'FLAGS:' $ {FLAGS})
文字列値を処理したいだけの場合は、@ nonexplosiveの回答を参照してください。
ただし、Cmake変数を使用したい場合CMakeLists.txtを作成し、その変数を何らかの値に設定するには、次のいずれかを使用します。[string()] Cmake 3.0以降(https://cmake.org/cmake/help/v3.0/command/string.html)またはCmake 2.0以降のset()。
2つのオプションがある理由は、古いcmakeがサポートしていないためです。CONCAT機能。
CMakeLists.txtの例:
cmake_minimum_required(VERSION 2.8.11)project(Hello)string(CONCAT x'hello''goodbye ')set(y'hellogoodbye')message(STATUS'DEBUG:x = $ {x} ')message(STATUS'DEBUG:y = $ {y} ')完全な標準:
--DEBUG:x = hellogoodbye-DEBUG:y = hellogoodbye-構成完了-生成完了-ビルドファイルは次の場所に書き込まれました:/ home / _______ / tests / _______