2009-09-03 6 views
6

Я хочу установить переменную CMake по-разному для отладочных и релизных сборок. Я пытался использовать CMAKE_CFG_INTDIR так:CMake переменная или свойство различать betwen отладочные и выпускные сборки

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

Но эта переменная принимает значение $ (OUTDIR) в то время, CMake делает свое дело.

Есть ли переменная CMake, которую я могу использовать, чтобы различать сборки отладки и выпуска, или что-то вроде строк TARGET_LINK_LIBRARIES, где можно указать отладочную и оптимизированную библиотеки?

EDIT: я не могу использовать CMAKE_BUILD_TYPE, поскольку это поддерживается только генераторами на основе make, и мне нужно заставить это работать с Visual Studio.

ответ

3

Вы можете определить свой собственный 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):

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

Для целей, у вас есть два решения:

Первый:

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}...) 
3

Попробуйте использовать CMAKE_BUILD_TYPE вместо

+1

Согласно документации CMake эта переменная доступна только для генераторов на основе замыкающих. Мне нужно, чтобы это работало как для make, так и для визуальной студии. – Torleif

+1

для Visual Studio 2005 (и я тоже довольно уверен, что и 2003). Он использует опцию типа сборки типа VS и заполняет ее обычным Debug, RelWithDeb, Release и т. Д., Поэтому не нужно создавать свои собственные. Просто используйте то, что уже доступно в cmake. –

 Смежные вопросы

  • Нет связанных вопросов^_^