2013-10-09 60 views
2

在CMake的我有一個函數:的CMake/CTEST add_test命令追加額外的引號,以我的命令參數

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) 

,我使用這樣的創建測試:

add_mpi_test(mpi 4) 

但是當我運行CTEST我得到以下錯誤:

2: Test command: /usr/local/bin/mpirun " -np 4 ./mpi " 
2: Test timeout computed to be: 9.99988e+06 
2: [proxy:0:[email protected]] HYDU_create_process (./utils/launch/launch.c:75): execvp error on file -np 4 ./mpi (No such file or directory) 

但是如果我在目錄中運行

/usr/local/bin/mpirun -np 4 ./mpi 

不帶引號一切正常,如果我用引號

/usr/local/bin/mpirun " -np 4 ./mpi " 

運行它,我得到完全相同的錯誤。

  • 有沒有辦法刪除這些引號?

  • 我有什麼在該行改變

    add_test(NAME $ {名} COMMAND 「的mpirun」 $ {test_parameters})

獲得:

2: Test command: /usr/local/bin/mpirun -np 4 ./mpi 

不含引號?

我已經試過

add_test(NAME ${name} COMMAND "mpirun ${test_parameters}") 

但隨後說,在無法找到我的可執行文件。

回答

5

嘗試:

set (test_parameters -np ${no_mpi_proc} "./${name}") 
add_test(NAME ${name} COMMAND "mpirun" ${test_parameters}) 
+0

謝謝!這工作!問題在哪裏? – gnzlbg

+4

參數'test_parameters'列表需要被構建爲CMake列表而不是CMake字符串。 – sakra