2009-09-03 4 views
6

디버그 및 릴리스 빌드에 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} STREQUAL "Debug") 

하지만이 변수는 CMake가 일을 할 때 $ (OUTDIR)로 평가한다.

디버그와 릴리스 빌드를 구분하는 데 사용할 수있는 CMake 변수가 있습니까? 아니면 디버그 및 최적화 라이브러리를 지정할 수있는 TARGET_LINK_LIBRARIES 방식을 따르는 것이 있습니까?

EDIT : CMAKE_BUILD_TYPE은 make 기반 생성기에서만 지원되므로 Visual Studio에서이 작업을 수행해야하므로 사용할 수 없습니다.

답변

3

사용하는 당신이 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") 

다음 CMake 문서에 따르면

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_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_BUILD_TYPE 대신

+1

이 변수는 메이크업 기반 발전기에만 사용할 수 있습니다. 나는 make와 Visual Studio 모두에서이 작업을해야합니다. – Torleif

+1

Visual Studio 2005 (그리고 나는 또한 확실히 2003뿐만 아니라) 그것은 VS '네이티브 빌드 유형 옵션을 사용하고 일반적인 디버그, RelWithDeb, 릴리스 등으로 채 웁니다. 그래서 자신을 만들 필요가 없습니다. 이미 cmake에서 사용할 수있는 것을 사용하십시오. –

관련 문제