0

単体テストでARGN をカスタムrun_test.cmakeに渡したいです。私が CMake スクリプトで行うことは次のとおりです。

# 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) configure メッセージの出力中にすべての引数を取得するのARGN: ARG1;ARG2;ARG3に対し、(2) 実行時のメッセージの出力中に最初の引数のみを取得することTEST_ARGN: ARG1です。

それは間違いなく私のCmakeの理解不足ですが、何が間違っているのか知りたいです。

4

1 に答える 1

1

${ARGN} には「;」が含まれているため 文字(リスト内の要素を区切る)、あなたはそれのすべての使用法をに入れる必要があります"

"-DTEST_ARGN=${ARGN}"

それ以外の場合、CMake はそれをコマンドのいくつかのパラメーターとして解釈します。

-DTEST_ARGN=ARG1 ARG2 ARG3
于 2015-07-11T14:24:23.137 に答える