ctest无法运行我的cmake脚本并收到错误消息

问题描述 投票:0回答:1

我将在Ctest中运行测试脚本,并将生成的输出文件与某些预期文件进行比较,这意味着我需要在一个ctest中运行两个命令。根据CTest with multiple commands

我有一个Script.cmake

macro(EXEC_CHECK CMD)
    execute_process(COMMAND ${CMD} RESULT_VARIABLE CMD_RESULT)
    if(CMD_RESULT)
        message(FATAL_ERROR "Error running ${CMD}")
    endif()
endmacro()
exec_check(${CMAKE_CURRENT_SOURCE_DIR}/test.sh)
exec_check(${CMAKE_COMMAND -E compare_files test_output ${CMAKE_CURRENT_SOURCE_DIR}/expected_output)

以及CMakeLists.txt

add_test(NAME Atest
COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_SOURCE_DIR}/script.cmake)

但是当我运行ctest时,我得到了[[Errors:

Error at ......../script.cmake: Error running ....../test.sh Call stack: ....../script.cmake:10(exec_check)
my 

test.sh

非常简单,只调用一个任务并传入两个参数-输入和输出:./A.tsk --input inputFileA --output test_output
我也尝试用
替换

my test.sh

exit 0
但是我仍然遇到相同的错误,所以我不认为这与test.sh有关。怎么了?谢谢!
makefile cmake ctest
1个回答
0
投票

将我的评论变成答案:

因为add_test()默认从与当前CMake源目录相对应的CMake

binary目录运行,所以add_test()也必须在此二进制目录中。 test.sh中的代码会将Script.cmake解释为相同的binary目录。否则,将导致此错误。

如果要避免这些问题,可以告诉CMake将工作目录

change

移至source
目录。 CMAKE_CURRENT_SOURCE_DIR
© www.soinside.com 2019 - 2024. All rights reserved.