3

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}")

しかし、実行可能ファイルが見つかりませんと表示されます。

4

1 に答える 1

6

試す:

set (test_parameters -np ${no_mpi_proc} "./${name}")
add_test(NAME ${name} COMMAND "mpirun" ${test_parameters})
于 2013-10-09T17:52:53.783 に答える