Как исключить / usr / include путь из приложения Linux?

Я столкнулся с проблемой, которой не удалось избежать. Redhat 6 (или большинство пакетов Linux) поставляется с пакетом QT по умолчанию, установленным с заголовками / etc в папках / usr / lib и / usr / include.

Теперь я хочу создать ссылку на более новую версию QT, не удаляя старую версию. К сожалению, поскольку заголовки находятся в папке / include /, gcc автоматически находит их, а затем использует неправильные включаемые файлы (вместо тех, которые есть у меня в другом месте).

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

Я не думаю, что эта проблема специфична для QT, это просто мой текущий экземпляр.

Какие-либо предложения?

Большое спасибо :)


person enderland    schedule 15.11.2011    source источник
comment
Вам просто нужно изменить флаги включения на gcc - см. stackoverflow.com/questions/558803/   -  person Martin Beckett    schedule 16.11.2011
comment
Я сделал это, но когда я компилирую проект, я все еще получаю пути / usr / include / QtCore и т. Д., А не те, которые являются путями CPLUS_LIBRARY_PATH. Я не совсем уверен, что делать ..   -  person enderland    schedule 17.11.2011


Ответы (2)


Если вы укажете включаемые каталоги новой установки Qt с помощью параметра -I, его следует искать до стандартных включаемых каталогов (например, / usr / include и т. Д.). Полное удаление стандартных включаемых каталогов из пути поиска, вероятно, не является хорошей идеей. потому что стандартные заголовки также будут там находиться (обратите внимание, что сами заголовки Qt, скорее всего, включают стандартные заголовки и не будут работать, если они не найдены).

Однако, если вы действительно не хотите, чтобы поиск выполнялся в стандартных подключаемых каталогах, опция -nostdinc должна делать то, что вы хотите.

person celtschk    schedule 15.11.2011

Моя проблема оказалась связана с использованием неправильной версии qmake. Он находил предыдущую версию qmake, и хотя она была из qt4, она ссылалась на неправильные включения.

Обновление путей qmake помогло решить эту проблему.

person enderland    schedule 17.11.2011
comment
Если это помогло решить вашу проблему, отметьте свой ответ как принятый, чтобы будущие зрители знали, что сработало. - person Nightfirecat; 18.11.2011
comment
Да, я ждал этого - мне нужно подождать час или около того после публикации, прежде чем я смогу это сделать :) - person enderland; 18.11.2011