0

CMAKE ctest を使用して単体テストケースを作成しようとしています。

カスタムの加算および関数で単体テストを実行したいと考えています。

追加テストケースとテストケースの違い

  1. addは 2 つの入力を使用しますが、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}"
  )

これを行った後、私はErrorの下になりました:

/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