38

CMakeのドキュメントでは、次のように読むことができます。

add_definitions

現在のディレクトリ以下のソースのコンパイラコマンドラインにフラグを追加します。

ディレクトリのCOMPILE_DEFINITIONSプロパティ

COMPILE_DEFINITIONS:ディレクトリのソースをコンパイルするためのプリプロセッサ定義。

ターゲットのCOMPILE_DEFINITIONSプロパティ

COMPILE_DEFINITIONS:ターゲットのソースをコンパイルするためのプリプロセッサ定義。

ソースファイルのCOMPILE_DEFINITIONSプロパティ

COMPILE_DEFINITIONS:ソースファイルをコンパイルするためのプリプロセッサ定義。

COMPILE_DEFINITIONSadd_definitions機能が重複しているようです。COMPILE_DEFINITIONSプロパティはより柔軟に見えます。

したがって、COMPILE_DEFINITIONSプロパティは、add_definitionsが実行するすべてのこと、さらにはそれ以上のことを実行するようです。

では、 COMPILE_DEFINITIONSプロパティは使用できないため、どのような場合にadd_definitionsを呼び出す必要がありますか?

4

3 に答える 3

43

add_definitionsCMake の最初のビルドが 10 年以上前にオンラインになって以来、CMake には存在しています。

COMPILE_DEFINITIONSは、単にそれを行うための、より新しく、より柔軟できめ細かい方法です。

CMakeLists.txt両方とも常に存在します。世界中の既存のファイルの 99% 以上が を使用しているためadd_definitions、削除するのは賢明ではありません。CMake の開発者は、後方互換性を維持するために非常に懸命に取り組んでいます。また、本質的に同じことを複数の異なる方法で行うこともあります。

そのadd_definitionsため、既存の CMakeLists ファイルを構成するのに主に役立ちますCOMPILE_DEFINITIONS。そして、それらのプロジェクトがそれを使用しているため、人々がそれらの CMakeLists ファイルを読んで学んだことに基づいている新しいプロジェクトも、add_definitions.

しかし、単独で使用するCOMPILE_DEFINITIONSだけで十分な場合は、何も問題はありません。

于 2013-03-07T04:40:45.980 に答える
5

何かを使わなければならないと言っているのではありません。

それはあなたの習慣の問題です。

いくつかの推奨事項:

  • 現在のディレクトリ以下のソースのコンパイラ コマンド ラインに追加する場合は、add_definitionsを使用します。入力するだけで短くなります。

  • ターゲットまたは特定のソースの微調整には、COMPILE_DEFINITIONSを使用します。

于 2013-03-05T18:22:39.110 に答える