I have a project (a library) that is subdivided into a few directories with code in them. I'd like to to have g++ search for header files in the project's root directory, so I can avoid different include paths for same header files across multiple source files.
Mainly, the root/
directory has sub-directories A/
, B/
and C/
, all of which have .hpp
and .cpp
files inside. If some source file in A wanted to include file.hpp
, which was in B, it would have to do it like this: #include "../B/file.hpp"
. Same for another source file that was in C. But, if A itself had sub-directories with files that needed file.hpp
, then, it would be inconsistent and would cause errors if I decided to move files (because the include path would be "../../B/file.hpp"
).
Also, this would need to work from other projects as well, which reside outside of root/
. I already know that there is an option to manually copy all my header files into a default-search directory, but I'd like to do this the way I described.
Edit: all programs using the library must compile only with g++ prog.cpp lib.a -o prog
. That means permanently setting the include path for g++!
This question is related to
directory
g++
header-files
include-path
Headers included with #include <> will be searched in all default directories , but you can also add your own location in the search path with -I command line arg.
I saw your edit you could install your headers in default locations usually
/usr/local/include
libdir/gcc/target/version/include
/usr/target/include
/usr/include
Confirm with compiler docs though.
gcc -I/path -L/path
-I /path
path to include, gcc will find .h files in this path
-L /path
contains library files, .a
, .s
o
it's simple, use the "-B" option to add .h files' dir to search path.
E.g. g++ -B /header_file.h your.cpp -o bin/your_command
Source: Stackoverflow.com