프로젝트를 컴파일하기 위해 전역 플래그 집합을 사용하고 싶습니다. 즉, 최상위 CMakeLists.txt 파일에서 다음을 지정했습니다.
ADD_DEFINITIONS ( -Wall -Weffc++ -pedantic -std=c++0x )
그러나 하위 디렉토리에있는 특정 파일 ( "foo.cpp")의 경우 컴파일 플래그를 -Weffc ++ (내가 변경할 수없는 상용 라이브러리 포함)를 적용하지 않도록 전환하고 싶습니다. -Wall 만 사용하도록 상황을 단순화하기 위해 다음을 시도했습니다.
SET_SOURCE_FILES_PROPERTIES( foo.cpp PROPERTIES COMPILE_FLAGS -Wall )
ADD_EXECUTABLE( foo foo.cpp )
, 작동하지 않았습니다. 나는 또한 시도했다
SET_PROPERTY( SOURCE foo.cpp PROPERTY COMPILE_FLAGS -Wall )
ADD_EXECUTABLE( foo foo.cpp )
과
ADD_EXECUTABLE( foo foo.cpp )
SET_TARGET_PROPERTIES( foo PROPERTIES COMPILE_FLAGS -Wall )
, 둘 다 작동하지 않았습니다.
마지막으로이 정의를 제거해 보았습니다.
REMOVE_DEFINITIONS( -Weffc++ )
ADD_EXECUTABLE( foo foo.cpp )
ADD_DEFINITIONS( -Weffc++ )
, 또한 작동하지 않았습니다 (즉, 상업 도서관에 대한 많은 스타일 경고를받습니다). (** 참고 : 실행 파일이 빌드 된 후 -Weffc ++ 지시문을 다시 포함하지 않으면 경고가 표시되지 않습니다.)
또한 일시적으로 컴파일 플래그를 제거하려고 시도했습니다 : http://www.cmake.org/pipermail/cmake/2007-June/014614.html ,하지만 도움이되지 않았습니다.
이것에 대한 우아한 해결책이 없습니까?