我正在寻找指定不同的DLL的基础上使用它建立在调试或发布。例如:多配置生成器中基于CMake配置的条件
IF CONFIGURATION MATCHES Debug
SET(MYDLL my_dlld)
ELSE()
SET(MYDLL my_dll)
ENDIF()
我已经看过逻辑表达式,如
$<$<CONFIG:Debug>:DEBUG_MODE>
但这似乎并没有工作,也许我实现它是不正确的。任何帮助将不胜感激
编辑:为了解一些最少的代码
PROJECT(myproject)
#ADD_DEFINITIONS(-DMANAGER_EXPORTS)
INCLUDE_DIRECTORIES(
${CMAKE_SOURCE_DIR}/API/mydll
)
$<$<CONFIG:Debug>:SET(MYDLL mydlld)>
$<$<CONFIG:Release>:SET(MYDLL mydll)>
SET(LIBS
${MYDLL}
)
MYDLL - 是具有调试和发布版本
生成器表达式确实是要走的路,但它们只在特定的上下文中进行评估,并且仅在生成时进行评估。所以,你是否可以使用它取决于你用'MYDLL'做什么。你能发布你的CMake代码的[mcve]吗? – Angew
编辑以尝试并符合最小示例 –
您刚将问题推回1步。你到底在做什么“LIBS”? ** **是重要的 - 什么是您的CMake代码中事实上使用的'MYDLL'。 Genexes在像target_link_libraries等内部特定的上下文中进行评估,但不是在一般的CMake代码中。 – Angew