Build process CMake变量或属性以区分调试版本和发布版本
我想为调试版本和发布版本设置不同的CMake变量。我曾尝试过像这样使用CMAKE_CFG_INTDIR:Build process CMake变量或属性以区分调试版本和发布版本,build-process,visual-c++,cmake,Build Process,Visual C++,Cmake,我想为调试版本和发布版本设置不同的CMake变量。我曾尝试过像这样使用CMAKE_CFG_INTDIR: IF(${CMAKE_CFG_INTDIR} STREQUAL "Debug") SET(TESTRUNNER DllPlugInTesterd_dll) ELSE(${CMAKE_CFG_INTDIR} STREQUAL "Debug") SET(TESTRUNNER DllPlugInTester_dll) ENDIF(${CMAKE_CFG_INTDIR} STREQU
IF(${CMAKE_CFG_INTDIR} STREQUAL "Debug")
SET(TESTRUNNER DllPlugInTesterd_dll)
ELSE(${CMAKE_CFG_INTDIR} STREQUAL "Debug")
SET(TESTRUNNER DllPlugInTester_dll)
ENDIF(${CMAKE_CFG_INTDIR} STREQUAL "Debug")
但在CMake执行其操作时,该变量的计算结果为$(OUTDIR)
是否有一个CMake变量可以用来区分调试版本和发布版本,或者类似于如何将库链接到目标库中,从而可以指定调试和优化库
编辑:我不能使用CMAKE_BUILD_TYPE,因为这仅由基于make的生成器支持,我需要使用Visual Studio来实现这一点。尝试使用
CMAKE_BUILD_TYPE
代替您可以定义自己的CMAKE_CFG_INTDIR
IF(NOT CMAKE_CFG_INTDIR)
SET(CMAKE_CFG_INTDIR "Release")
ENDIF(NOT CMAKE_CFG_INTDIR)
IF(CMAKE_CFG_INTDIR MATCHES "Debug")
...Debug PART...
ELSE(CMAKE_CFG_INTDIR MATCHES "Debug")
...Release PART...
ENDIF(CMAKE_CFG_INTDIR MATCHES "Debug")
然后,在调用cmake时添加定义(-D):
对于目标,您有两种解决方案:
第一个:
IF(CMAKE_CFG_INTDIR MATCHES "Debug")
TARGET_LINK_LIBRARIES(YOUR_EXE DllPlugInTesterd...)
ELSE(CMAKE_CFG_INTDIR MATCHES "Debug")
TARGET_LINK_LIBRARIES(YOUR_EXE DllPlugInTester...)
ENDIF(CMAKE_CFG_INTDIR MATCHES "Debug")
第二个:
IF(CMAKE_CFG_INTDIR MATCHES "Debug")
FIND_LIBRARY(DLL_PLUGIN DllPlugInTesterd_dll /path/of/your/lib)
ELSE(CMAKE_CFG_INTDIR MATCHES "Debug")
FIND_LIBRARY(DLL_PLUGIN PlugInTester_dll /path/of/your/lib)
ENDIF(CMAKE_CFG_INTDIR MATCHES "Debug")
然后是链接
TARGET_LINK_LIBRARIES(YOUR_EXE ${DLL_PLUGIN}...)
根据CMake文档,此变量仅适用于基于make的生成器。我需要让它在make和visual studio中都能正常工作。对于visual studio 2005(我也非常确定2003),它使用VS的本机构建类型选项,并使用常见的调试、RelWithDeb、发布等填充它。。所以不需要自己做。只需使用cmake中已有的功能。
TARGET_LINK_LIBRARIES(YOUR_EXE ${DLL_PLUGIN}...)