1

CMakeでは、失敗する可能性add_custom_command(... POST_BUILD ...)のある aで使用したいと考えています。COMMAND

観察

  1. の終了コードが ではないため、最初の実行makeは失敗します。--> これは私が期待するものです。add_custom_command( ... COMMAND exit 1)0
  2. makeで指定されたコマンドは再度実行されないため、2 回目の実行はパスしadd_custom_commandます。--> これは私が望んでいるものではありません。makeカスタムコマンドが機能するまで失敗したいと思います。

最小限の失敗の例

project(Foo)
cmake_minimum_required(VERSION 3.2)


# Create main.cc
##include <iostream>
#
#int main() {
#  std::cout << "Hello, World!" << std::endl;
#}
add_executable(main main.cc)

add_custom_command(TARGET main POST_BUILD
          COMMAND exit 1  # In the real example, I am changing capabilities of the resulting binary with /sbin/setcap, which might fail.
          COMMENT "Doing stuff."
          )

質問

  1. この問題を解決するにはどうすればよいですか?
  2. これは CMake の意図した動作ですか?

1 つのソリューション

ではなく、成功時POST_BUILDにファイルを出力するカスタムコマンドを作成できることを認識しています。TARGET.passedただし、これは避けたいと思います。ここでは POST_BUILD が最も適切な使用法と思われるためです。(結果のファイルの機能を変更しています。)

4

1 に答える 1