2009-09-03 6 views
6

Voglio impostare una variabile CMake in modo diverso per le build di debug e release. Ho cercato di usare CMAKE_CFG_INTDIR come questo:CMake variabile o proprietà per discernere tra debug e release build

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

Ma questa variabile restituisce $ (OUTDIR) al momento CMake fa la sua cosa.

Esiste una variabile CMake che è possibile utilizzare per distinguere tra build di debug e release, o qualcosa del genere su come TARGET_LINK_LIBRARIES dove si possono specificare librerie debug e ottimizzate?

MODIFICA: Non riesco a utilizzare CMAKE_BUILD_TYPE poiché questo è supportato solo dai generatori basati su make e ho bisogno di farlo funzionare con Visual Studio.

risposta

3

È possibile definire il proprio 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") 

Poi, quando si chiama CMake aggiungere il Definizione (-D):

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

Per gli obiettivi, avete due soluzioni:

Primo:

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

secondo:

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

Poi per il link

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

Provare a usare CMAKE_BUILD_TYPE invece

+1

Secondo la documentazione CMake questa variabile è disponibile solo per i generatori a base di make. Ho bisogno di farlo funzionare sia per la marca che per lo studio visivo. – Torleif

+1

per Visual Studio 2005 (e sono abbastanza sicuro anche del 2003) Utilizza l'opzione di tipo Build nativo di VS e lo popola con i soliti Debug, RelWithDeb, Release, ecc. Quindi non è necessario crearne uno proprio. Basta usare ciò che è già disponibile in cmake. –

Problemi correlati