2012-01-26 57 views

答えて

259

CMakeには、この目的のためにadd_definitionsコマンドがあります。例:

add_definitions(-DOPENCV_VERSION=${OpenCV_VERSION}) 
    add_definitions(-DWITH_OPENCV2) 

非常にコンパイラ固有のものですが、CMakeが知っているすべてのトリッキーのためにクロスプラットフォームで動作します。 CMakeはそんなに馬鹿だ。ここでは、コマンドの

詳細な説明:https://cmake.org/cmake/help/latest/command/add_definitions.html

+0

これは私のために働くおかげさま=) – Mythli

126

特定のターゲットのためにこれを行うには、次の操作を実行できます。

target_compile_definitions(my_target PRIVATE FOO=1 BAR=1) 

あなたがそのあなたの一つのターゲットが複数ある場合は、これを行う必要がありますあなたは皆同じフラグを使うことを望んでいません。

+4

答えが必要です!そのより具体的で安全な使用する! – Gabriel

+0

このオプションは、カスタムターゲットが定義されている場合にのみ機能します。私はデフォルトのターゲットのためにこれを動作させることはできません。 – Mike

+0

@JimHunziker 'target_compile_definitions(my_target PRIVATE FOO = 1)'が 'set_source_files_properties(foo.cpp PROPERTIES COMPILE_DEFINITIONS -DFOO = 1)'とどのように違うのですか? –

関連する問題