Условно отключить предупреждения с помощью qmake / gcc? - PullRequest
6 голосов
/ 22 апреля 2009

Я участвую в программном проекте, написанном на Qt и построенном с помощью qmake и gcc для Linux. Мы должны связаться со сторонней библиотекой, которая имеет довольно низкое качество и выдает массу предупреждений. Я хотел бы использовать -W -Wall в нашем исходном коде, но передать -w грязной сторонней библиотеке, чтобы на консоли не было шума и помех, чтобы мы могли сосредоточиться на качестве кода.

В qmake есть ли способ условно добавить CFLAGS / CXXFLAGS к определенным файлам и библиотекам?

Ответы [ 5 ]

5 голосов
/ 22 апреля 2009

Джонатан, я думаю, проблема в том, что ваши исходные файлы включают заголовочные файлы из сторонних библиотек, и вы хотите отключить предупреждения для последних.

Кевин, я думаю, вы можете использовать прагмы для контроля предупреждений: диагностические прагмы gcc

Вы можете добавить их до и после #include для сторонних библиотек.

3 голосов
/ 22 июня 2011

Что если вы включите вашу библиотеку, используя -isystem.

В файле проекта, например ::

QMAKE_CXXFLAGS += -isystem /usr/local/boost_1_44_0
1 голос
/ 13 ноября 2010

Кевин,

qmake CONFIG+=debug QMAKE_CXXFLAGS_WARN_ON=-w QMAKE_CFLAGS_WARN_ON=-w

должен сделать (используйте CONFIG + = отпустите, если хотите ...)

0 голосов
/ 25 марта 2012

Как писал Мартин, добавляя каталог включения через

QMAKE_CXXFLAGS += -isystem ...

подавляет предупреждения только в соответствующих заголовках. Нет необходимости отключать предупреждения для любых исходных файлов вашего проекта (или даже для всего проекта) или связываться с файлами #pragmas или wrappers.

Обратите внимание, что если вы используете QtCreator, вы все равно (т.е. дополнительно) захотите добавить каталог в INCLUDEPATH, чтобы индексатор поднял заголовки.

0 голосов
/ 22 апреля 2009

Обычно вы собираете стороннюю библиотеку в отдельном каталоге из вашего собственного кода, поэтому у вас будет другой make-файл, чтобы вы могли установить другой набор флагов для этой компиляции.

Если вы смешали сторонний библиотечный код со своим собственным кодом, вы настроили себя на кошмар обслуживания.

...