Какова переменная среды для GCC/g++ для поиска файлов .h во время компиляции: LIBRARY_PATH, C_PATH, C_INCLUDE_PATH или CPLUS_PATH?

Есть ли переменная среды для GCC/g++ для поиска файлов .h во время компиляции?

Я google мой вопрос, есть люди говорят LIBRARY_PATH, C_PATH, C_INCLUDE_PATH, CPLUS_PATH, так какой из них?

Ответ 1

От: 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".

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

Ответ 2

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

Подводя итог:

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

Ответ 3

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

cpp -v

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

#include "..." search starts here:
#include <...> search starts here: