하나의 파일에 대한 플래그를 컴파일 특정 파일 ("foo.cpp"라고 가정 해 봅시다) 하위 디렉토리에 컴파일 플래그를 적용하지 않으려면 -WeffC++ (변경할 수없는 상용 라이브러리 포함)로 전환하고 싶습니다. 상황을 단순화하기 위해 -Wall만을 사용하기 위해 시도했습니다.재정의 내 최상위 CMakeLists.txt 파일에 내가 지정한 것을 의미한다, 내가 프로젝트를 컴파일 플래그의 글로벌 설정을 사용하고자하는
SET_SOURCE_FILES_PROPERTIES(foo.cpp PROPERTIES COMPILE_FLAGS -Wall)
ADD_EXECUTABLE(foo foo.cpp)
이 작동하지 않았습니다. 는 또한 일하지 둘 다있는
ADD_EXECUTABLE(foo foo.cpp)
SET_TARGET_PROPERTIES(foo PROPERTIES COMPILE_FLAGS -Wall)
SET_PROPERTY(SOURCE foo.cpp PROPERTY COMPILE_FLAGS -Wall)
ADD_EXECUTABLE(foo foo.cpp)
및
을 시도했다.마지막으로, 나는이 (고화질) 제거 시도 :
REMOVE_DEFINITIONS(-Weffc++)
ADD_EXECUTABLE(foo foo.cpp)
ADD_DEFINITIONS(-Weffc++)
이 또한 작동하지 않았다 (의미, 나는 상업 라이브러리에 대한 스타일 경고를 많이 얻을). (** 참고 :. 경고는 내가하지 않으면 실행이 구축 된 후 -WeffC++ 지시문을 다시 포함 억제)
는 또한 일시적으로 컴파일 플래그 제거 시도 : http://www.cmake.org/pipermail/cmake/2007-June/014614.html 을,하지만하지 않았다 도움.
우아한 해결책이 있습니까?
잠깐만 기다려주세요. 마지막 시도가 수행되었지만 빌드 된 후에 만 이것이 캐싱 문제가되지 않을 수도 있습니다. 변경 한 후에 CMakeCache를 삭제하십시오. – Cameron
관련 항목 : [CMake에서 단 하나의 실행 파일 만 컴파일러 플래그를 변경하는 방법?] (https://stackoverflow.com/q/24238937/608639) Andre의 대답은 기존 옵션을 새로운 옵션으로 대체하는 방법 인 것으로 나타났습니다 . – jww