アップデート:
@mathstuf が彼自身の回答で指摘したように、バージョン 2.8.12 の時点で、CMake は のWORKING_DIRECTORY
引数内でジェネレータ式をサポートしていますadd_test
。これにより、残りの回答は CMake v2.8.11 以下にのみ適用されます。
私の知る限り、「$」をADD_TEST
エスケープせずに渡すことは実際には不可能CTestTestfile.cmake
です。
実際、この状況を処理する "CMake" の方法は、おそらく、依存する exe をコマンド ライン パラメーターとしてテスト exe に渡すことです。これには、テスト コードの変更が含まれます。依存する実行可能ファイルがすべて CMake ターゲットである場合、" "ADD_TEST
を使用してコマンドで参照できます。ここで、 は CMake ターゲットの名前です。$<TARGET_FILE:tgt>
tgt
ただし、これを回避するために使用できる大きくて汚いハックがあります。ADD_TEST
コマンドを次のように置き換えます。
ADD_TEST(NAME test WORKING_DIRECTORY "@WORKING_DIR@" COMMAND test ${TEST_ARGS})
FILE(WRITE ${CMAKE_BINARY_DIR}/CTestCustom.cmake
"SET(WORKING_DIR \"${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/\\\${CTEST_CONFIGURATION_TYPE}\")\n")
FILE(APPEND ${CMAKE_BINARY_DIR}/CTestCustom.cmake
"CONFIGURE_FILE(${CMAKE_BINARY_DIR}/CTestTestfile.cmake ${CMAKE_BINARY_DIR}/CTestTestfile.cmake @ONLY)\n")
これはCTestCustom.cmake
、CTestTestfile.cmake
. CMakeを実行した後、次CTestTestfile.cmake
の行があります
SET_TESTS_PROPERTIES(test PROPERTIES WORKING_DIRECTORY "@WORKING_DIR@")
CTest を実行して を呼び出すCTestCustom.cmake
と、"@WORKING_DIR@"
が正しい値に置き換えられます。
それは本当にハックです。自動生成された CMake ファイルをいじるのは面倒ですが、テストをリファクタリングする時間が得られるまで、または CMake が構成ごとのサポートをより適切にサポートできるようになるまで、問題が発生する可能性がありますWORKING_DIRECTORY
。