52

cmakeで文字列を連結する方法はありますか?

メイン メソッドを含む .cpp ファイルのみを含むフォルダーがあります。すべての src ファイルに対して foreach を使用するだけで、これは簡単になると思いました。これは私がこれまでに得たものです:

project(opengl-tutorial)
cmake_minimum_required(VERSION 2.8)

aux_source_directory(. SRC_LIST)

add_definitions(
    --std=c++11
)

foreach (src ${SRC_LIST})
    # name = ${src} + ".out"
    add_executable(${name} ${src})
    target_link_libraries(${name} GL GLU GLEW glfw)
endforeach(src ${SRC_LIST})

コメントに記載されていることを行うにはどうすればよいですか?

4

5 に答える 5

19

3 つの典型的な CMake 文字列連結方法

この特定の質問に対する答えは、 または で処理するのが最適setですが、文字列を任意の文字で結合する場合stringの 3 つ目の可能性がありlistます。

設定()

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})
于 2018-11-04T08:58:02.410 に答える