ADD_DEPENDENCIES到不同的构建类型

时间:2013-07-18 11:17:03

标签: visual-c++ cmake

美好的一天,关于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).

1 个答案:

答案 0 :(得分: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>")

这个file将帮助您查看不同操作系统的一些选项。