0

この変数をルート CMakeLists.txt に設定しています

set(${LIBNAME}_srcs
File1.cpp
File2.cpp
File3.cpp
File4.cpp
File5.cpp
)
add_subdirectory(A)

サブディレクトリAに実行可能ファイルのソースとして変数を追加したい

add_executable(${TEST}}

これを行う最もクリーンな方法は何ですか? すべてのソース ファイルで ../ を使用して新しい変数を作成する必要はありませんか? または、使用できるマクロはありますか?

4

2 に答える 2

2

${LIBNAME}_srcs次のようにして、各値への絶対パスを挿入できます。

foreach(${LIBNAME}_src ${${LIBNAME}_srcs})
  list(APPEND abs_${LIBNAME}_srcs ${CMAKE_SOURCE_DIR}/${${LIBNAME}_src})
endforeach()

add_executable(${TEST} ${abs_${LIBNAME}_srcs})

ここで結論を急ぐと、あなたがしていることは少し変わっているように見えます。

通常、add_executable呼び出しは、ソース ファイルのリストが収集されている場所 (通常は同じディレクトリ) で行われます。

ソース変数${LIBNAME}_srcsに名前を付けたという事実からすると、これらのソースから既にライブラリを作成していると思います。もしそうなら、すべてのライブラリのソースを実行可能ファイルに再コンパイルするよりも、そのライブラリを test サブディレクトリにリンクする方がよいでしょう。

何かのようなもの:

add_executable(${TEST} test_main.cpp)
target_link_libraries(${TEST} ${LIBNAME})
于 2013-05-06T21:40:53.963 に答える
0

ソースを追加するときは、次のようにします。

set(${LIBNAME}_srcs
${SRC}/File1.cpp
${SRC}/File2.cpp
${SRC}/File3.cpp
${SRC}/File4.cpp
${SRC}/File5.cpp
)

${SRC}を使用して見つかったソース ディレクトリへの絶対パスはどこにありますか${CMAKE_SOURCE_DIR}

次に、サブディレクトリで簡単に使用できadd_executable(${TEST} ${LIBNAME}_srcs)ます。CMake は、親ディレクトリのスコープを子ディレクトリに自動的にインポートします。

于 2013-05-06T21:28:21.410 に答える