我正在尝试使用CMAKE ctest编写单元测试用例。
我想对我的自定义add和inverse函数进行单元测试。
加法和逆法测试用例的区别
- add使用两个输入,而inverse使用单个输入
- 两个测试用例的第一个输入的地址不同
我的 cmake 文件的片段如下所示:
add_custom_command(
OUTPUT ${output_file_y} ${output_file_txt}
COMMAND ${MY_EXECUTABLE}
ARGS
-lh ${bin_file} 0x10000000
if((${function} STREQUAL "add"))
-lh ${input_file0} 0x10100000
-lh ${input_file1} 0x10200000
elseif((${function} STREQUAL "inverse"))
-lh ${input_file0} 0x10c00000
endif()
${options}
-outfile ${output_file_y}
> ${output_file_txt}
MAIN_DEPENDENCY ${bin_file}
DEPENDS ${map_file} ${input_file0}
COMMENT "Executing ${base_name_mangled}"
)
这样做后,我得到以下错误:
/bin/sh:1:语法错误:“(”意外忍者:构建停止:
子命令失败。
临时固定:
if((${function} STREQUAL "add"))
add_custom_command(
OUTPUT ${output_file_y} ${output_file_txt}
COMMAND ${MY_EXECUTABLE}
ARGS
-lh ${bin_file} 0x10000000
-lh ${input_file0} 0x10100000
-lh ${input_file1} 0x10200000
${options}
-outfile ${output_file_y}
> ${output_file_txt}
MAIN_DEPENDENCY ${bin_file}
DEPENDS ${map_file} ${input_file0}
COMMENT "Executing ${base_name_mangled}"
)
elseif((${function} STREQUAL "inverse"))
add_custom_command(
OUTPUT ${output_file_y} ${output_file_txt}
COMMAND ${MY_EXECUTABLE}
ARGS
-lh ${bin_file} 0x10000000
-lh ${input_file0} 0x10c00000
${options}
-outfile ${output_file_y}
> ${output_file_txt}
MAIN_DEPENDENCY ${bin_file}
DEPENDS ${map_file} ${input_file0}
COMMENT "Executing ${base_name_mangled}"
)
endif()
但是在临时固定中,它有更多的复制和粘贴代码。我想避免这种情况并将 add_custom_command 结合在一起。
有没有办法这样做。