Я использую две разные версии GCC
на одной и той же машине CentOS
(входит в одну и одну ОС), и я не хочу заменять систему GCC
своим пользовательским, я использую пользовательский вариант для создания некоторого программного обеспечения. Проблема заключается в том, что Qt Creator
добавляет /usr/include
чтобы автоматически включать папки, поэтому пользовательский GCC
начинает использовать систему C++ и включает в себя сообщения со странными сообщениями об ошибках, такие как error: '::memchr' has not been declared
. У меня нет /usr/include
где-нибудь в моем файле *.pro
, поэтому похоже, что Qt Creator
добавляет их сам. Как запретить проекту Qt Creator
использовать некоторые конкретные включенные исправления, чтобы разрешить компиляцию на машине с 2 версиями GCC
? Когда я использую Eclipse CDT
на том же компьютере, он отлично работает, потому что Eclipse ничего не добавляет и использует только указанные мной каталоги.
Это не изящный ответ, если у кого-то есть лучшие идеи, вы по-прежнему можете опубликовать свой ответ, и я приму его. Итак, я добавил шаг пользовательской сборки между командами qmake
и make
, и я использую команду sed
в этом шаге пользовательской сборки для редактирования Makefile
на лету и удаления дополнительных включений. Это решение работает, однако, оно уродливо.
Вы можете использовать CXXFLAGS += -nostdinc
.
Это должно сделать следующее (выдержка из руководства):
Не выполняйте поиск в стандартных системных каталогах для файлов заголовков. Будут найдены только те каталоги, которые вы указали с параметрами -I (и каталог текущего файла, если необходимо).
qmake
добавляет некоторые включения явно с ключом -I
, и они включают причину ошибки, и qmake
добавляет их даже тогда, когда я устанавливаю пустое значение в INCLUDEPATH
.