Fixing #includes <> for GCC (Code::Blocks)
Solution 1
I'm not quite sure if I understand your explanation, what do you mean with "from the root of the project". But well...
When you use the #include directive with <> what your are telling the compiler is to look for the the file on the Directories you include with -I option.
In code blocks go to Project->Build Options->Search Directories->Compiler
And add the folder path to the folder containing "Engine".
You can find more info here http://msdn.microsoft.com/en-us/library/36k2cdd4(v=vs.71).aspx
Edit: Before trying anything, try #include "path/somefile.h"
instead of #include <pathsomefile.h>
Solution 2
Probably you should write
#include "Engine/Graphics/Sprite.h"
(notice the double quotes instead of the brackets).
In #include
directives brackets are used to specify that you want to include a system/library header file, that will be searched in the system includes directory (e.g. /usr/include), while the double quotes are used to include files in the current path.
This should work if the files that use this #include
are in the directory that contains the Engine/...
hierarchy. If that's not the case, you should also specify it to the compiler as an additional include directory, with the -I
directive.
Solution 3
Please remember that one usually uses #include <filename>
directive to include files from standard include catalogues. These catalogues defined as environment variable or in command line of compiler. And #include "filename"
to include header file from current directory or any path relative to current directory.
without going through and doing it all manually?
You may use search&replace feature of your favourite editor
Solution 4
I'm going to copy Ben's comment and say you should add an include path to where your header files are located. This is very common to do in a project
Admin
Updated on June 26, 2022Comments
-
Admin almost 2 years
I am working with some code that was written for a different compiler/linker, and it is including files like this:
#include <Engine/Graphics/Sprite.h>
from anywhere in the project.
The project contains such a file at that path (from the root of the project), but when I build I get the file not found error.
How can I fix all of these includes, without going through and doing it all manually?
-
Admin almost 13 yearsthe main problem is that it would be way too tedious to go through and change all of the includes manually. even Sprite.cpp includes Sprite.h that way.
-
Matteo Italia almost 13 years
sed
can help you, but when doing this kind of work is always good to have a backup copy ready :)