g ++ сначала не ищет заголовки в текущем каталоге - PullRequest
0 голосов
/ 11 июня 2019

У меня есть несколько заголовков a.h с одинаковыми именами в текущем каталоге и в каталоге inc.Я бы хотел, чтобы тот из текущего каталога был включен в main.cpp, но мне нужен другой заголовок b.h из каталога inc.Однако GCC сначала не ищет заголовки в текущем каталоге.Почему?

main.cpp

#include <iostream>

#include "a.h"
#include "b.h"

int main(int argc, char *argv[])
{
    (void)argc;
    (void)argv;
    std::cout << FOO << std::endl;
    std::cout << BAR << std::endl;
    return 0;
}

build/a.h

#define FOO 1

inc/a.h


inc/b.h

#define BAR 1

из build/ каталога:

build$ g++ -I. -I../inc ../main.cpp -o ../main
../main.cpp: In function ‘int main(int, char**)’:
../main.cpp:10:18: error: ‘FOO’ was not declared in this scope
     std::cout << FOO << std::endl;
                  ^

Если удалить, inc/a.h, все работает.

gcc версии 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1 ~ 16.04.11)

1 Ответ

0 голосов
/ 11 июня 2019

Мне удалось решить проблему, добавив

export CPLUS_INCLUDE_PATH="/home"

Я не знаю почему, но похоже, что CPLUS_INCLUDE_PATH, начинающийся с двоеточия, вызвал проблему (поскольку у меня есть несколько export CPLUS_INCLUDE_PATH="$CPLUS_INCLUDE_PATH:path/to/include" в моем .bashrc

...