0

我正在尝试使用CMAKE ctest编写单元测试用例

我想对我的自定义addinverse函数进行单元测试。

加法法测试用例的区别

  1. add使用两个输入,而inverse使用单个输入
  2. 两个测试用例的第一个输入的地址不同

我的 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 结合在一起。

有没有办法这样做。

4

0 回答 0