gnz*_*lbg 2 string unit-testing concatenation cmake ctest
在CMake我有一个功能:
function(add_mpi_test name no_mpi_proc)
include_directories(...)
add_executable(...)
add_dependencies(...)
target_link_libraries(...)
# The important lines:
set(test_parameters " -np ${no_mpi_proc} ./${name}")
add_test(NAME ${name} COMMAND "mpirun" ${test_parameters})
endfunction(add_mpi_test)
Run Code Online (Sandbox Code Playgroud)
我用来创建这样的测试:
add_mpi_test(mpi 4)
Run Code Online (Sandbox Code Playgroud)
但是当我运行CTest时,我收到以下错误:
2: Test command: /usr/local/bin/mpirun " -np 4 ./mpi "
2: Test timeout computed to be: 9.99988e+06
2: [proxy:0:0@localhost] HYDU_create_process (./utils/launch/launch.c:75): execvp error on file -np 4 ./mpi (No such file or directory)
Run Code Online (Sandbox Code Playgroud)
但是,如果我在目录中运行
/usr/local/bin/mpirun -np 4 ./mpi
Run Code Online (Sandbox Code Playgroud)
没有引号一切正常,如果我用引号运行它
/usr/local/bin/mpirun " -np 4 ./mpi "
Run Code Online (Sandbox Code Playgroud)
我得到完全相同的错误.
有没有办法删除这些报价?
我有什么要改变的
add_test(NAME $ {name} COMMAND"mpirun"$ {test_parameters})
要得到:
2: Test command: /usr/local/bin/mpirun -np 4 ./mpi
Run Code Online (Sandbox Code Playgroud)
没有引号?
我试过了
add_test(NAME ${name} COMMAND "mpirun ${test_parameters}")
Run Code Online (Sandbox Code Playgroud)
但后来它说无法找到我的可执行文件.
尝试:
set (test_parameters -np ${no_mpi_proc} "./${name}")
add_test(NAME ${name} COMMAND "mpirun" ${test_parameters})
Run Code Online (Sandbox Code Playgroud)