I want to set a CMake variable differently for debug and release builds. I have tried to use CMAKE_CFG_INTDIR like this:
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")
But this variable evaluates to $(OUTDIR) at the time CMake does its thing.
Is there a CMake variable I can use to discern between debug and release builds, or something along the lines of how TARGET_LINK_LIBRARIES where one can specify debug and optimized libraries?
EDIT: I cannot use CMAKE_BUILD_TYPE since this is only supported by make based generators and I need to get this working with Visual Studio.
You can define your own 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")
Then, when you call cmake add the Definition (-D):
cmake -DCMAKE_CFG_INTDIR=Debug /path/of/your/CMakeLists.txt
For targets, you have two solutions:
First one:
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")
Second one:
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")
Then for link
TARGET_LINK_LIBRARIES(YOUR_EXE ${DLL_PLUGIN}...)
Try to use CMAKE_BUILD_TYPE
instead