web-dev-qa-db-ja.com

CMakeは最初のエラーで停止できますか?

それはすべて問題です。 cmakeでエラーが発生すると、すぐに停止せず、すべてのCMakeファイルの処理を続行する場合があります。エラーがあることがわかったのは、処理の最後にあるため、ログ全体をさかのぼって、それがどこにあるかを確認する必要があります。

最初のエラーの直後にCMakeを停止するオプション、変数、または手段はありますか?

明確化:私はソースコードのコンパイルを止めようとしているのではなく、CMakeの生成(たとえばLinuxではMakefileの生成)を止めようとしています。

ここに例があります(これは私の実際のプロジェクトではなく、エラーを生成するように特別に設計されています)。私のファイルCMakeLists.txt:

cmake_minimum_required(VERSION 3.6)
project(test)
set_property(TARGET foo PROPERTY PROP1 TRUE)
set_property(TARGET bar PROPERTY PROP2 TRUE)

そしてcmake .を実行すると、出力が得られます:

CMake Error at CMakeLists.txt:3 (set_property):
  set_property could not find TARGET foo.  Perhaps it has not yet been
  created.


CMake Error at CMakeLists.txt:4 (set_property):
  set_property could not find TARGET bar.  Perhaps it has not yet been
  created.


-- Configuring incomplete, errors occurred!

私が知りたいのは、最初に報告されたエラーの直後にcmakeが停止する可能性があるかどうかです。

9
louisiuol

CMakeを最初のエラーで停止させるには、CMakeLists.txtファイルに以下を追加します。

-Wfatal-errors
このオプションにより、コンパイラーは、さらにエラーメッセージを続けて出力するのではなく、最初に発生したエラーでコンパイルを中止します

さらに知りたい場合や追加したい場合は、さらに GCCコンパイラオプション を参照してください。

CMakeを使用していないが、最初のエラーの後でコンパイラを停止したい場合は、コマンドでフラグを使用してくださいg++ -Wfatal-errors foo.cpp

5
DrZoo