2009-09-03 8 views
6

Quiero establecer una variable CMake diferente para depurar y construcción de las versiones. He intentado utilizar CMAKE_CFG_INTDIR así:variable de CMake o propiedad para discernir Transcurrirá depuración y liberación construye

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") 

Pero esta variable se evalúa como $ (OUTDIR) en el momento de CMake hace su cosa.

¿Existe una variable CMake que pueda usarse para discernir entre compilaciones de depuración y liberación, o algo así como TARGET_LINK_LIBRARIES donde se pueden especificar bibliotecas depuradas y optimizadas?

EDIT: No puedo usar CMAKE_BUILD_TYPE ya que esto sólo es compatible con los generadores basados ​​maquillaje y tengo que conseguir este trabajo con Visual Studio.

Respuesta

3

Usted puede definir su propio 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") 

Entonces, cuando se llama a cmake añadir la definición (D):

cmake -DCMAKE_CFG_INTDIR=Debug /path/of/your/CMakeLists.txt 

Para objetivos, usted tiene dos soluciones:

primera:

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") 

segunda:

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") 

Luego de enlace

TARGET_LINK_LIBRARIES(YOUR_EXE ${DLL_PLUGIN}...) 
3

Intente utilizar CMAKE_BUILD_TYPE lugar

+1

De acuerdo con la documentación CMake esta variable sólo está disponible para los generadores basados ​​maquillaje. Necesito hacer que esto funcione tanto para el estudio visual como para el visual. – Torleif

+1

para Visual Studio 2005 (y estoy bastante seguro de 2003 también) Utiliza la opción de tipo de generación nativa VS', y lo llena con la depuración de costumbre, RelWithDeb, lanzamiento, etc .. así que no hay necesidad de hacer su propio. Solo usa lo que ya está disponible en cmake. –

Cuestiones relacionadas