我正在尝试调用add_test(),如下所示:
add_test(NAME ${TEST_NAME} COMMAND cmake
-DTEST_PROG:FILEPATH=${TEST_EXECUTABLE}
...
-DTEST_EXEC_DIRS:PATH=${TEST_EXEC_DIRS}
-P SciTextCompare.cmake
)
Run Code Online (Sandbox Code Playgroud)
$ {TEST_EXEC_DIRS}是一个CMake列表,当我执行上面的代码时,CTestTestfile.cmake中的结果行只包含列表中的第一个项目,所以我最终得到了cmake的以下参数:
"cmake" "-DTEST_PROG:FILEPATH=C:/path/to/my/executable" ... "-DTEST_EXEC_DIRS:PATH=C:/first/dir/in/list" "-P" "SciTextCompare.cmake"
Run Code Online (Sandbox Code Playgroud)
如何传入列表并让它像这样调用cmake:
"cmake" "-DTEST_PROG:FILEPATH=C:/path/to/my/executable" ... "-DTEST_EXEC_DIRS:PATH=C:/first/dir/in/list;C:/second/dir/in/list" "-P" "SciTextCompare.cmake"
Run Code Online (Sandbox Code Playgroud)
如果您使用的是CMake版本2.8.11或更高版本,则可以使用生成器表达式 $<SEMICOLON>来防止在带有";"的参数上进行列表扩展:
cmake_minimum_required(VERSION 2.8.11)
...
string (REPLACE ";" "$<SEMICOLON>" GENERATOR_TEST_EXEC_DIRS "${TEST_EXEC_DIRS}")
add_test(NAME ${TEST_NAME} COMMAND ${CMAKE_COMMAND}
-DTEST_PROG:FILEPATH=${TEST_EXECUTABLE}
...
-DTEST_EXEC_DIRS:PATH=${GENERATOR_TEST_EXEC_DIRS}
-P SciTextCompare.cmake
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
693 次 |
| 最近记录: |