MyTetra Share
Делитесь знаниями!
Как подключать (#include) заголовки относительно корня проекта кроссплатформенно?
Время создания: 20.03.2016 22:41
Текстовые метки: c++, qt, include, подключение, заголовок, заголовочный файл, относительно, корень, INCLUDE_PATH
Раздел: Компьютер - Программирование - Язык C++ (Си++) - Библиотека Qt - Инсталляция Qt и сборка проектов
Запись: xintrea/mytetra_syncro/master/base/13883404549229a10leb/text.html на raw.github.com

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


Обычно, для компиляциив в Linux, можно добавлять в переменную окружения INCLUDE_PATH путь к каталогу проекта. После чего будут работать директивы #include с файлами относительно корня проекта. Вот что написано в "Стандарте программирования на C++. Версия 0.1.1.2b":

...препроцессор последовательно перебирает пути в INCLUDE_PATH начиная с первого. Относительный путь из директивы include разрешается относительно (sic) папки из INCLUDE_PATH. Если файл не найден, переходим к следующему элементу INCLUDE_PATH. Если INCLUDE_PATH исчерпан, компилятор сообщает об ошибке.

Теперь вопрос: как подключать (инклюдить) заголовки относительно корня проекта кроссплатформенно на Qt?

Ответ: начиная с версии Qt 4.5, в *.pro файле можно использовать переменную $${_PRO_FILE_PWD_}, которая содержит путь до *.pro файла.

То есть, если сырцы лежат в поддиректории src относительно *.pro файла:

.. [DIR]

src [DIR]

myprogram.pro

то путь INCLUDE_PATH можно задать так:

INCLUDEPATH += $${_PRO_FILE_PWD_}/src

- эту строку надо прописывать в *.pro файле, в нашем случае в myprogram.pro.

После этого в C++ коде можно будет указывать пути к файлам в директиве #include относительно корня проекта.




Так же в этом разделе:
 
MyTetra Share v.0.59
Яндекс индекс цитирования