У меня есть иерархия файлов папок:
src/
Fuelable.h
Fuelables/
PetrolCar.h
PetrolCar.cpp
PetrolCar.h:
#include "Fuelable.h"
PetrolCar.cpp:
#include "PetrolCar.h"
Чтобы сделать этот компилятор, я добавил папку src, чтобы включить пути, как в этом руководстве: http://help.eclipse.org/indigo/index.jsp?topic=%2Forg.eclipse.cdt.doc.user%2Ftasks%2Fcdt_t_proj_paths.htm
Код включения не выделяется как ошибка. Но когда я пытаюсь построить его с ошибкой в makefile:
Building file: ../src/Fuelables/PetrolCar.cpp
In file included from ../src/Fuelables/PetrolCar.cpp:8:0:
Invoking: GCC C++ Compiler
../src/Fuelables/PetrolCar.h:12:22: fatal error: Fuelable.h: No such file or directory
g++ -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"src/Fuelables/PetrolCar.d" -MT"src/Fuelables/PetrolCar.d" -o "src/Fuelables/PetrolCar.o" "../src/Fuelables/PetrolCar.cpp"
compilation terminated.
make: *** [src/Fuelables/PetrolCar.o]
Что интересно, intellisence видит все файлы.
Если я компилирую из командной строки:
sashko@sashko-1225C:~/workspaceEclipse/FuelingSystem/src/Fuelables$ g++ PetrolCar.cpp -I
/home/sashko/workspaceEclipse/FuelingSystem/src/Fuelable.h
cc1plus: warning: /home/sashko/workspaceEclipse/FuelingSystem/src/Fuelable.h: not a directory [enabled by default]
In file included from PetrolCar.cpp:8:0:
PetrolCar.h:12:22: fatal error: Fuelable.h: No such file or directory
compilation terminated.
Допустим, вы будете распространять библиотеку "Машины". Иерархией включения может быть:
some_local_or_general_or_system_include_directory
- Machines
- Fuelables
Затем вы можете #include <Machines/Fuelable.h>
или #include <Machines/Fuelables/PetrolCar.h>
имеющие один каталог include. В противном случае вы должны добавить каждый каталог в свой путь include.
-I
вg++
#include "../Fuelable.h"
чтобы указать, что файл находится в предыдущем каталоге?