Инспектор кода QtCreator прерывается, когда я использую флаг -isystem вместо INCLUDEPATH

Я хотел подавить предупреждение от внешних библиотек, что можно сделать, пометив их как системные библиотеки. Я понял, как это сделать в .pro файле проекта QtCreator:

QMAKE_CXXFLAGS += -isystem ../libs/boost159/

Проблема в том, что QtCreator полагается на параметр INCLUDEPATH, ожидает этого:

INCLUDEPATH += ../libs/boost159/

Если я удалю его, QtCreator больше не сможет находить библиотеки ускорения:

описание изображения

Первоначально я хотел сообщить об этом как об ошибке, но после нескольких сообщений я больше не верю, что разработчики QtCreator когда-либо рассмотрят возможность исправления этого. Вместо этого я пришел сюда за обходным решением.

Поскольку qmake имеет условные операторы Я мог бы использовать что-то вроде этого:

isCompiling {
    QMAKE_CXXFLAGS += -isystem ../libs/boost159/
} else {
    INCLUDEPATH += ../libs/boost159/
}

Чтобы синтаксический анализ QtCreator не завершился неудачно, но после компиляции будет использоваться isystem. Любые идеи?

Неявно: Как я могу создать условное выражение, которое будет запускаться / не запускаться только тогда, когда QtCreator анализирует файл проекта?


person Tomáš Zato - Reinstate Monica    schedule 21.01.2016    source источник
comment
Пожалуйста, сформулируйте вопрос прямо. Пока что похоже, что вы документировали свое исследование и остановились на середине предложения :)   -  person Kuba hasn't forgotten Monica    schedule 21.01.2016


Ответы (1)


Я нашел решение. Вам нужно использовать qmake дополнительных аргументов и указать переменную по вашему выбору, а затем проверить, определена ли она. Поскольку QtCreator не знает об этих параметрах, он не будет выполнять блок, предназначенный для компиляции:

# This variable is set as "CONFIG += compiling"
# The assignment is done in qmake command line argument
compiling {
  # This block takes effect during real compilation
  QMAKE_CXXFLAGS += -isystem ../libs/boost159/ -isystem ../libs/openssl/include
} else {
  # This block is seen by QtCreator and other tools that do not have 'CONFIG compiling' defined
  INCLUDEPATH += ../libs/boost159/ ../libs/openssl/include
}

Затем настройку необходимо выполнить в управлении проектом. Не забудьте установить его как для выпуска, так и для отладки:

описание изображения

person Tomáš Zato - Reinstate Monica    schedule 21.01.2016
comment
Рад, что смог помочь. Обратите внимание, что есть одно предостережение, которое возникает, когда файлы C включаются и компилируются с помощью компилятора C. Я предполагаю, что QMAKE_CFLAGS - правильная переменная для них, но я не закончил свое исследование по этой теме. - person Tomáš Zato - Reinstate Monica; 10.04.2016
comment
Спасибо за предостережение - мой случай касается заголовков только в тех случаях, когда библиотеки связаны (или являются библиотеками только для заголовков). - person sage; 12.04.2016