【问题标题】:CMake/CTest add_test command appends extra quotes to my command parametersCMake/CTest add_test 命令将额外的引号附加到我的命令参数
【发布时间】:2013-10-09 17:14:07
【问题描述】:

在 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)

我用来创建这样的测试:

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:0@localhost] 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 ${name} COMMAND "mpirun" ${test_parameters})

得到:

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

没有引号?

我试过了

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

然后它说找不到我的可执行文件。

【问题讨论】:

    标签: string unit-testing cmake concatenation ctest


    【解决方案1】:

    试试:

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

    【讨论】:

    • 参数test_parameters列表需要构建为CMake列表而不是CMake字符串。
    猜你喜欢
    • 2012-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多