Visual studio 2012 多配置生成器中基于CMake配置的条件
我期待着指定不同的DLL的基础上使用它的调试或发布建设。例如:Visual studio 2012 多配置生成器中基于CMake配置的条件,visual-studio-2012,cmake,Visual Studio 2012,Cmake,我期待着指定不同的DLL的基础上使用它的调试或发布建设。例如: IF CONFIGURATION MATCHES Debug SET(MYDLL my_dlld) ELSE() SET(MYDLL my_dll) ENDIF() 我看过逻辑表达式,例如 $<$<CONFIG:Debug>:DEBUG_MODE> $ 但这似乎不起作用,可能是我对它的执行不正确。任何帮助都将不胜感激 编辑:一些用于理解的最小代码 PROJECT(myproject
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}
)
项目(myproject)
#添加_定义(-DMANAGER_导出)
包含目录(
${CMAKE_SOURCE_DIR}/API/mydll
)
$
$
设置(LIBS)
${MYDLL}
)
mydll-是一个预生成的共享库,具有调试和发布版本我认为一个可能的解决方案是您可以执行以下操作
#SET(LINK_LIB debug my_dlld optimized my_dll)
#TARGET_LINK_LIBRARIES(MYDLL ${LINK_LIB})
希望这有帮助 生成器表达式确实是一种方法,但它们仅在特定上下文中进行计算,并且仅在生成时进行计算。因此,您是否可以使用它们取决于您使用的
MYDLL
。你能发布你的CMake代码吗?编辑以尝试满足最小的示例你刚刚将问题向后推了一步。你到底在用LIBS
做什么?这才是最重要的-在CMake代码中,MYDLL
最终用于什么。Genexes在某些上下文中进行计算,如在目标链接库
中等,但不在一般的CMake代码中进行计算。@Mikitarant:生成器表达式在这种情况下也可以用作变量链接库
:$
的值。