2011-10-05 6 views
1

에서 별 구성으로 소스 파일을 포함, 나는 3 개 CPP 파일이).
나는 'b.cpp'가 DEBUG 설정으로 컴파일되기를 원한다.
RELEASE 구성에서 'c.cpp'만 컴파일하면됩니다.내 특정 CMake 프로젝트에서 CMake

어떻게하면됩니까? target_link_libraries() CMake 작업에서 허용하는 debugoptimized 키워드와 비슷한 것이 필요합니다.

답변

1

내가 아는 한, cmake는 구성에 따라 일부 파일을 제외하는 방법을 제공하지 않습니다. 따라서이 문제를 해결하려면 해결 방법이 필요합니다. cmake에서

#ifdef BUILD_ME 
//original content of your file 
#endif 

하고 다음 세트 구성 특정 컴파일러 정의 :

if (${CMAKE_GENERATOR} MATCHES "Make" AND "${CMAKE_BUILD_TYPE}" STREQUAL "") 
    # This block might be needed because CMAKE_BUILD_TYPE is usually 
    # undefined for makefiles. 
    # And COMPILE_DEFINITIONS_RELEASE are not chosen by default. 
    set(CMAKE_BUILD_TYPE RELEASE) 
endif() 

set_source_files_properties(b.cpp PROPERTIES COMPILE_DEFINITIONS_DEBUG BUILD_ME) 
set_source_files_properties(c.cpp PROPERTIES COMPILE_DEFINITIONS_RELEASE BUILD_ME) 
add_executable(target_name a.cpp b.cpp c.cpp) 

예를 들어, 당신은 몇 가지 가드 매크로 전체 b.cpp의 내용과 c.cpp를 포장 할 수 있습니다