2015-07-11 103 views
0

我想在單元測試中將ARGN傳遞給自定義run_test.cmake。 我的CMake的腳本做的是:將ARGN傳遞給CMake的add_test()中的自定義腳本

# 1: 
message("ARGN: ${ARGN}") 
add_test(NAME ${_category}/${_test_name}_mpi${_nmpi} 
WORKING_DIRECTORY "${_target_dir}" 
COMMAND "${CMAKE_COMMAND}" 
-DNMPI=${_nmpi} 
-DTEST_PROG=${_target_dir}/${_target_exec} 
-DTEST_ARGN=${ARGN} 
-Doutput_blessed=${CMAKE_SOURCE_DIR}/unit_tests/${_category}/${_test_name}.output 
-Doutput_test=${_target_dir}/output 
-P ${CMAKE_SOURCE_DIR}/unit_tests/run_test.cmake 
) 

其中

# 2 (part of run_test.cmake): 
    message("TEST_ARGN: ${TEST_ARGN}") 
    # run the executable 
    execute_process(COMMAND mpirun -np ${NMPI} ${TEST_PROG} ${TEST_ARGN} 
      RESULT_VARIABLE HAD_ERROR 
      OUTPUT_VARIABLE output 
      ERROR_VARIABLE output) 

的問題是,(1)獲取過程中配置郵件打印ARGN: ARG1;ARG2;ARG3所有的參數,而(2)只獲得第一個,在運行時消息打印TEST_ARGN: ARG1

這絕對是我對Cmake缺乏瞭解,但我很想知道我做錯了什麼。

回答

1

由於$ {ARGN}包含';'字符(其限定在列表元素),你應該把它的所有用途爲"

"-DTEST_ARGN=${ARGN}" 

否則CMake的解釋爲幾個參數的命令:

-DTEST_ARGN=ARG1 ARG2 ARG3 
+0

非常感謝,這解決了它! – Denis

相關問題