2015-12-16 4 views
5

CMAKE_BUILD_TYPE=Releaseは暗黙的に-DNDEBUGを意味しますか?CMAKE_BUILD_TYPE =リリースは-DNDEBUGを意味しますか?

そうでない場合:この意味合いが起こると予想するのは妥当でしょうか?

私はCMakeコードを以下は私のCMakeLists.txtで冗長であるかどうかを知りたい:

if (NOT CMAKE_BUILD_TYPE MATCHES Debug) 
    add_definitions(-DNDEBUG) 
endif() 
+0

私はそれをチェックしたところ、* CMake *は '-DNDEBUG'フラグを付け加えましたが、[CMake documentation](https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE)のためにまだ問題があります。 html)は、 'CMAKE_BUILD_TYPE = Debug'オプションが存在するときに' -DNDEBUG'フラグが追加されているかどうかを明示的に記述しません**。私は未確認の動作に基づいてコードを書くことを避ける方が好きです。なぜなら、将来のCMakeのバージョンでは変更される可能性があるからです(潜在的な影響は小さくなります)。 –

+1

あなたはタイトルに=を意味しますか?私は間違いなく 'NDEBUG'を定義しない**デバッグビルドを期待しています。 – immibis

+0

@immibis - ありがとう。もちろんそれはタイプミスでした。私は私の質問を編集しました。 +1 –

答えて

1

はい、それはCMakeので設定されています。 CMakeのコードを覗いてみると、コンパイラのホストに対しては設定されていることがわかります。おそらく、これらのコンパイラでのみこのフラグを設定します。ここではGCCに関する行の1:

Modules/Compiler/GNU.cmake: set(CMAKE_${lang}_FLAGS_RELEASE_INIT "-O3 -DNDEBUG") 

をしかし、多くのプロジェクトは、初期設定を保存しても、ユーザーの定義を上書きすることなくリリース/デバッグフラグを上書きすることに注意してください。

関連する問題