Переопределить флаги компиляции для отдельных файловC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Переопределить флаги компиляции для отдельных файлов

Сообщение Anonymous »

Я хотел бы использовать глобальный набор флагов для компиляции проекта, то есть в моем файле 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/20 ... 14614.html
, но это не помогло.

Разве нет элегантного решения?

Подробнее здесь: https://stackoverflow.com/questions/136 ... ngle-files
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»