2

こんにちは、Cmake についての質問です。ビルド タイプが異なる MSVC プロジェクトの依存関係を作成することは可能ですか。今、私はcmakeファイルに次のコードを持っています:

SET(LIBRARIES optimized lib_release debug lib_debug)
ADD_CUSTOM_TARGET(lib_release
COMMAND ${CMAKE_COMMAND} -E copy_if_different "bla bla bla"
COMMENT "Build dep release library")
ADD_CUSTOM_TARGET(lib_debug
COMMAND ${CMAKE_COMMAND} -E copy_if_different "bla bla bla"
COMMENT "Build debug library") 
ADD_DEPENDENCIES(${PROJECT_NAME} lib_release)
ADD_DEPENDENCIES(${PROJECT_NAME} lib_debug)

これは完全に機能しましたが、リリース バージョンのみを作成したい場合は、リリースに必要のないデバッグ バージョン ライブラリの余分なステップ ビルドを取得します。このライブラリはターゲット (リリース) にリンクされていませんが、ビルドに多くの時間を費やします。私の質問は次のとおりです。リリースに使用する依存関係と、次のようなデバッグに使用する依存関係を指定することは可能ですか:

ADD_DEPENDENCIES(${PROJECT_NAME} lib_release optimize)
ADD_DEPENDENCIES(${PROJECT_NAME} lib_debug debug).
4

1 に答える 1

0

cmake は、-DCMAKE_BUILD_TYPE=Debug|Release etcコマンドで設定したビルド タイプを認識します。set (CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS} ")次に、コンパイル時のフラグなどに次のように使用できます。

  set(CMAKE_CXX_FLAGS_DEBUG "/Zi /Od /D \"_DEBUG\" /D \"DEBUG\" /RTC1 /MDd") 
  set(CMAKE_CXX_FLAGS_MINSIZEREL "/MD") 
  set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELEASE} /Zi") 

リンカーフラグを設定することもできますset(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} <flags>)

個々のターゲットも同様の方法で対処できます

  set_target_properties(yourexe PROPERTIES
                      LINK_FLAGS_RELEASE "<FLAGS>"
                      LINK_FLAGS_DEBUG "/DEBUG"
                      LINK_FLAGS_RELWITHDEBINFO "<FLAGS>"
                      LINK_FLAGS_MINSIZEREL "<FLAGS>")

このファイルは、さまざまな OS のいくつかのオプションを確認するのに役立ちます。

于 2013-07-19T19:39:47.753 に答える