0

g++、MinGW/g++ (それぞれ 4.x)、Clang (3.x)、および MSVC++ (>= V8) を使用してコンパイルできるようにしたい CMake プロジェクトがあります。

コンパイラ引数またはコマンド ラインを含むプリコンパイラ シンボルが必要です。

これは、最適化が有効になっているかどうか、およびコマンド ラインでどのスイッチが有効になっているかを確認するのに役立ちます。

たとえば、 でコンパイルされたプログラムはg++ -O3 -DNDEBUG -g0、フラグが"-O3 -DNDEBUG -g0". 手動の Makefile を作成するときは、単純に変数にフラグを集めてから、これをコンパイラに渡してコマンド ラインを生成することができましたg++ -O3 -DNDEBUG -g0 -DCOMPILER_ARGS="-O3 -DNDEBUG -g0"

CMakeを使用してこれを達成するにはどうすればよいですか?

4

2 に答える 2

0

add_definitions("-DCOMPILER_ARGS=\"${CMAKE_CXX_FLAGS}\")

ただし、CMAKE_CXX_FLAGS変数にはユーザーが設定したフラグのみが含まれることに注意してください。コンパイル フラグのセット全体が必要な場合は、 target プロパティを使用しますCOMPILE_FLAGS。この値は関数で取得できますget_target_property()

于 2012-06-26T11:21:12.667 に答える
0

MSVC を除くすべてのオプションについて、プリプロセッサ定義を作成するのではなく、make VERBOSE=1ビルドまたは追加時に使用する必要があります。

set(CMAKE_VERBOSE_MAKEFILE ON)

あなたのCMakeLists.txtに。

MSVC の場合、IDE 内から各プロジェクトのコマンド ライン引数を調べることができます: [プロパティ ページ] -> [構成プロパティ] -> [C/C++] -> [コマンド ライン] と [プロパティ ページ] -> [構成プロパティ] -> [リンカー] -> [コマンド ライン]。

于 2012-06-26T12:46:45.617 に答える