Какая переменная среды для GCC / G ++ для поиска файлов .h во время компиляции: LIBRARY_PATH, C_PATH, C_INCLUDE_PATH или CPLUS_PATH? - PullRequest
18 голосов
/ 23 марта 2010

Существует ли переменная окружения для GCC / G ++ для поиска файлов .h во время компиляции?

Я гуглю свой вопрос, есть люди, которые говорят LIBRARY_PATH, C_PATH, C_INCLUDE_PATH, CPLUS_PATH, так что же это такое?

Ответы [ 3 ]

27 голосов
/ 23 марта 2010

От: http://gcc.gnu.org/onlinedocs/cpp/Environment-Variables.html

CPATH
C_INCLUDE_PATH
CPLUS_INCLUDE_PATH
OBJC_INCLUDE_PATH

Значение каждой переменной - это список каталогов, разделенных специальным символом, очень похожим на PATH, в котором нужно искать заголовочные файлы. Специальный символ PATH_SEPARATOR зависит от цели и определяется во время сборки GCC. Для целей на базе Microsoft Windows это точка с запятой, а для почти всех других целей - двоеточие.

CPATH указывает список каталогов для поиска, как если бы они были указаны с помощью -I, но после любых путей, указанных с помощью параметров -I в командной строке. Эта переменная среды используется независимо от того, какой язык подвергается предварительной обработке.

Остальные переменные среды применяются только при предварительной обработке указанного языка. Каждый из них определяет список каталогов для поиска, как если бы они были указаны с помощью -isystem, но после любых путей, указанных с помощью параметров -isystem в командной строке.

Во всех этих переменных пустой элемент указывает компилятору искать его текущий рабочий каталог. Пустые элементы могут появляться в начале или в конце пути. Например, если значение CPATH равно :/special/include, это имеет тот же эффект, что и '-I. -I/special/include'.

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

, обычно используется переменная make-файла или параметр IDE.
7 голосов
/ 23 марта 2010

Просто посмотрите на актуальную документацию gcc . Там все объяснено.

Подведем итог:

  • LIBRARY_PATH для компоновщика, а не для заголовочных файлов (используется при поиске библиотек, запрашиваемых параметром -l)
  • CPATH определяет каталоги для поиска файлов заголовков (например, опция -I)
  • C_INCLUDE_PATH и CPLUS_INCLUDE_PATH аналогичны CPATH, но для C / C ++ соответственно.
2 голосов
/ 14 ноября 2014

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

cpp -v

, который скажет вам, какие пути проверяются для файлов .h, вывод включает в себя разделы:

#include "..." search starts here:
#include <...> search starts here:
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...