2012-01-23 3 views
2

CMake에는 단일 대상 생성기에 대한 사용자 지정을 허용하는 CMAKE_BUILD_TYPE이 있습니다. 그러나 이것은 CMAKE_BUILD_TYPE이 무시되므로 여러 타겟 생성기에 대해서는 완전히 쓸모가 없습니다.일반적으로 CMake를 사용하는 구성에 따라 동작을 제어하는 ​​방법은 무엇입니까?

(I는 비주얼 스튜디오 발전기 및 NMAKE 발전기에 대한 릴리스 모드에서 구축 할 것을) 나는 그런 긴 Doxygen을 빌드로 대상을 (갖고 싶어 예를 위해 고려한다.)

+1

그래서 나는 항상 "모든"cmake 대상의 일부가 아닌 내 doxygen 생성을 위해 별도의 cmake 대상을 만듭니다. 그런 다음 릴리스 시간에 수동으로 doxygen 타겟을 빌드합니다. 너의 것이 좋은 질문이다. –

답변

-1

AFAIK , CMake는 적어도 Visual Studio 프로젝트의 경우 여러 타겟 생성기에 대해 CMAKE_BUILD_TYPE을 무시하지 않습니다. 따라서 다음과 같이하면 :

if(CMAKE_BUILD_TYPE STREQUAL "Release") 
... 
endif() 

IDE에서 "릴리스"가 선택된 경우에만 작동합니다.

+2

나는 이것이 효과가 있다고 생각하지 않는다. "if"문은 일찍, cmake 구성 시간에 실행됩니다. Visual Studio IDE에서 OP의 "Release"선택은 나중에 빌드시에 수행됩니다. –

+0

그래서 "AFAIK"를 넣었습니다. VS 생성기는 if()에서 생성 된 코드를 .vsproj의 Release 섹션에 넣어야합니다. 그러나 나는 확실하지 않다. – arrowd

+1

이것이 실제로 무시되고 있음을 확인할 수 있습니다. (특히 CMAKE_BUILD_TYPE은 비주얼 스튜디오 용 건물의 빈 문자열입니다.) –

관련 문제