CMake中的项目构建配置

fee*_*ree 4 cmake

我的问题与CMake非常相似:根据CMake生成的项目中的配置,更改Visual Studio和Xcode exectuables的名称.在该帖子中,输出文件名将根据项目配置(Debug,Release等)进行更改.我想走得更远.当我知道项目的配置时,我想告诉可执行程序根据项目配置链接不同的库名.我想知道CMake中是否有一个可以告诉项目配置的变量.如果存在这样的变量,我的任务将变得更容易:

if (Project_Configure_Name STREQUAL "Debug")
   #do some thing
elseif (Project_Configure_Name STREQUAL "Release")
   #do some thing
endif()
Run Code Online (Sandbox Code Playgroud)

Sir*_*ius 8

根据http://cmake.org/cmake/help/v2.8.8/cmake.html#command:target_link_libraries,您可以根据配置指定库,例如:

target_link_libraries(mytarget
  debug      mydebuglibrary
  optimized  myreleaselibrary
)
Run Code Online (Sandbox Code Playgroud)

请注意,optimized模式意味着每个不是调试的配置.

以下是一个更复杂但更可控的解决方案:

假设您链接到导入的库(未在您的cmake项目中编译),您可以使用以下命令添加它:

add_library(foo STATIC IMPORTED)
set_property(TARGET foo PROPERTY IMPORTED_LOCATION_RELEASE c:/path/to/foo.lib)
set_property(TARGET foo PROPERTY IMPORTED_LOCATION_DEBUG   c:/path/to/foo_d.lib)
add_executable(myexe src1.c src2.c)
target_link_libraries(myexe foo)
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅http://www.cmake.org/Wiki/CMake/Tutorials/Exporting_and_Importing_Targets.