Я хотел бы использовать глобальный набор флагов для компиляции проекта, что означает, что в моем файле CMakeLists.txt верхнего уровня я указал:
ADD_DEFINITIONS ( -Wall -Weffc++ -pedantic -std=c++0x )
Однако для определенного файла (скажем, "foo.cpp" ) в подкаталоге, я хочу переключить компилировать флаги, чтобы не применять -WeffС++ (включая коммерческую библиотеку, которую я не могу изменить). Чтобы упростить ситуацию, чтобы использовать только -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++ )
что также не сработало (то есть, я получаю много предупреждений о стиле в коммерческой библиотеке). (** Примечание. Предупреждения ARE подавляются, если я НЕ повторно включаю директиву -WeffС++ после создания исполняемого файла.)
Я также попытался временно удалить флаги компиляции: http://www.cmake.org/pipermail/cmake/2007-June/014614.html , но это не помогло.
Нет ли элегантного решения для этого?