我正在使用CMake创建一个Visual Studio 2008项目。在这个项目中,我需要创建一个名为UnitaryTests的新配置。所以,在CMakeLists.txt中我放了一行
set(CMAKE_CONFIGURATION_TYPES "Release;Debug;UnitaryTest" CACHE STRING "Configurations" FORCE)
稍后在CMakeLists.txt文件中有以下行:
target_link_libraries( ${PROJECT_NAME} ${ASTEK_LIBRARIES} )
链接外部包。变量ASTEK_LIBRARIES包含如下文本:
debug;debug/libs;optimized;release/libs
我的问题是我必须强制新配置仅使用此软件包的调试版本(目前它正在使用发行版本)。你知道怎么做吗?
注意:填充变量ASTEK_LIBRARIES不是我。它是由我无法更改的公司脚本创建的。
感谢您的帮助。
答案 0 :(得分:4)
使用:
set_property(GLOBAL PROPERTY DEBUG_CONFIGURATIONS "Debug;UnitaryTest")
如果你也定义了RelWithDebInfo
,那么这也属于这里。
有关详细信息,请执行:
cmake --help-property DEBUG_CONFIGURATIONS
答案 1 :(得分:0)
要强制target_link_libraries()
基于每个目标链接到其他库,请在链接之前适当替换关键字。以下示例显示了如何将“优化”替换为“通用”,以强制调试版本链接到发布(优化)库:
string(REPLACE "optimized" "general" MODIFIED_LIBS "${MY_LIBS}")
target_link_libraries(MyTarget ${MODIFIED_LIBS})
例如对于MY_LIBS =“ optimized; mylib.lib; debug; mylib_d.lib”,MODIFIED_LIBS将为“ general; mylib.lib; debug; mylib_d.lib”。在此示例中,关键字“ general”将导致在调试构建过程中两个库都在目标中链接。
有关更多信息,请参见https://cmake.org/cmake/help/latest/command/target_link_libraries.html。