我正在编写一个CMake脚本来为我生成一些差异测试。测试的想法是生成两个文件并对它们进行区分,如果它们相同则结果是成功的。
以下是我脚本的相关部分:
# pretty_print built_in generation
message("")
message("Generating ${BUILT_IN_TMP_FILE}")
execute_process(
COMMAND ${DEBUG_EXE} ${BUILT_IN_ARGS}
RESULT_VARIABLE TEST_ERROR
INPUT_FILE ${MCR_FILE}
OUTPUT_FILE ${BUILT_IN_TMP_FILE})
# standalone first step - generate the unformatted debug file
message("Generating ${STANDALONE_TMP_FILE}_step1")
execute_process(
COMMAND ${DEBUG_EXE}
RESULT_VARIABLE TEST_ERROR
INPUT_FILE ${MCR_FILE}
OUTPUT_FILE ${STANDALONE_TMP_FILE}_step1)
message("Generating ${STANDALONE_TMP_FILE}")
execute_process(
COMMAND ${MDF_PRETTY_EXE}
RESULT_VARIABLE TEST_ERROR
INPUT_FILE ${STANDALONE_TMP_FILE}_step1
OUTPUT_FILE ${STANDALONE_TMP_FILE})
if ( TEST_ERROR )
message( FATAL_ERROR "Test failed, returned ${TEST_ERROR}" )
else()
message("Files generated sucessfully")
endif()
当我在linux上构建我的系统时,一切顺利,我最终生成了三个文件并输出:
47: DEBUG_EXE: /debug
47: MDF_PRETTY_EXE: /mdf_pretty
47: Generating /mdf_pretty_built_in.tmpoutput.txt
47: Generating /mdf_pretty_standalone.tmpoutput.txt_step1
47: Generating /mdf_pretty_standalone.tmpoutput.txt
47: Files generated sucessfully
1/1 Test #47: Osaka.Itch.v1_02:mdf_pretty_diff_test ... Passed 0.05 sec
然而,当我转向Windows并运行相同的测试时,我得到了这个:
47: DEBUG_EXE: /debug.exe
47: MDF_PRETTY_EXE: /mdf_pretty.exe
47: Generating Z:/mdf_pretty_built_in.tmpoutput.txt
47: Generating Z:/mdf_pretty_standalone.tmpoutput.txt_step1
47: Generating Z:/mdf_pretty_standalone.tmpoutput.txt
47: CMake Error at Z:/mdf_pretty_diff_test.cmake:69 (message):
47: Test failed, returned The system cannot find the file specified
47:
47:
1/1 Test #47: Osaka.Itch.v1_02:mdf_pretty_diff_test ...***Failed 0.29 sec
当我调查我的构建目录时,我注意到在Windows上没有我的文件(我在OUTPUT_FILE
参数中指定的内容)存在,而在linux上它们是。当它尝试将mdf_pretty_standalone.tmpoutput.txt_step1
用作第三个INPUT_FILE
的{{1}}时,测试失败。
有什么想法吗?有什么我忘记了吗?
谢谢!
答案 0 :(得分:1)
检查所有阶段的错误,而不仅仅是最后阶段。早期的步骤可能也失败了(可能是由于目录权限?),但你没有看错误信息。
在每次TEST_ERROR
来电之后,请进行execute_process()
检查和留言。