1

私はこれについて多くを見つけることができないようです、それで多分それは不可能です...または私は間違ったキーワードで検索しています。

とにかく、私はソースのディレクトリを持っています。Source内にTestsというフォルダーとProductsという別のフォルダーがあるとします。私はCMakeLists.txtファイルの通常の階層を持っているので、各ディレクトリやサブディレクトリなどにすべてのソースを構築できます...知りたいのは、cmakeでコマンドライン引数を渡すことができるかどうかです。テストフォルダまたはソースフォルダのみをビルドします。

たとえば、cmakeTESTのようなもの..

ありがとう

4

2 に答える 2

3

もちろん、フラグを使用できます。

if(TEST)
 include needed folders
else()
 do something else
endif()

そして、次のように cmake を呼び出します。

cmake -DTEST=1 ..
于 2012-10-14T22:31:24.203 に答える
2

それらを異なるターゲットとして作成できます。make testCMake はそれらすべてを構成しますが、その後、またはを実行できますmake product。例は次のとおりです。

project(myProject)

add_subdirectory(tests)
add_subdirectory(products)

add_executable(test EXCLUDE_FROM_ALL ${TEST_SRC_FILES})
add_executable(product EXCLUDE_FROM_ALL ${PRODUCT_SRC_FILES})

各サブディレクトリには、ソース ファイル変数を構築する CMakeLists.txt があります。EXCLUDE_FROM_ALL入力するだけではテストも製品もビルドされないことを意味しますがmake、それを実行するかどうかはユーザーが決定できます。

ビルドするには、make testormake productを実行すると、そのターゲット (およびすべての依存関係) のみがビルドされます。

于 2012-10-14T22:37:55.573 に答える