2011-06-15 3 views
3

Je travaille avec un code qui a été écrit pour un compilateur/éditeur de liens différents, et il est y compris les fichiers comme ceci:Fixation #includes <> pour GCC (Code :: Blocks)

#include <Engine/Graphics/Sprite.h> 

de partout dans le projet.

Le projet contient un tel fichier à ce chemin (à partir de la racine du projet), mais lorsque je compile, le fichier ne contient pas d'erreur.

Comment puis-je résoudre tous ces problèmes, sans passer par-dessus et tout faire manuellement?

+1

ajouter ce chemin au compilateur en utilisant '-i' –

+2

Vous devez construire avec' -I chemin/to/top/of/build' plutôt que de faire inclure chaque chemin relatif –

+0

@Ben cela ressemble à comment je pourrais le faire le plus facile. comment serait le meilleur moyen de le faire dans Code :: Blocks? –

Répondre

10

Je ne suis pas sûr si je comprends votre explication, que voulez-vous dire par "de la racine du projet". Mais bon ...

Lorsque vous utilisez la directive #include avec <> ce que vous dites au compilateur est de rechercher le fichier dans l'option Répertoires que vous incluez avec -I.

Dans les blocs de code vont projet-> Construire Options-> Rechercher Directories-> Compiler

Et ajoutez le chemin du dossier dans le dossier contenant "Engine".

Vous pouvez trouver plus d'informations ici http://msdn.microsoft.com/en-us/library/36k2cdd4(v=vs.71).aspx

Edit: Avant d'essayer quoi que ce soit, essayez #include "path/somefile.h" au lieu de #include <pathsomefile.h>

3

Probablement vous devriez écrire

#include "Engine/Graphics/Sprite.h" 

(notez les guillemets doubles au lieu des parenthèses).

#include Dans les parenthèses de directives, vous spécifiez que vous souhaitez inclure un fichier d'en-tête système/bibliothèque qui sera recherché dans le répertoire système include (par exemple/usr/include), tandis que les guillemets sont utilisés dans le chemin actuel.

Cela devrait fonctionner si les fichiers qui utilisent cette #include se trouvent dans le répertoire qui contient la hiérarchie Engine/.... Si ce n'est pas le cas, vous devez également l'indiquer au compilateur en tant que répertoire d'inclusion supplémentaire, avec la directive -I.

+0

Le principal problème est qu'il serait trop fastidieux de passer à travers et de modifier tous les inclusions manuellement. même Sprite.cpp inclut Sprite.h de cette façon. –

+0

'sed' peut vous aider, mais lorsque vous faites ce genre de travail, il est toujours bon d'avoir une copie de sauvegarde prête :) –

1

Veuillez vous rappeler que l'on utilise généralement la directive #include <filename> pour inclure les fichiers des catalogues d'inclusion standard. Ces catalogues sont définis en tant que variables d'environnement ou en ligne de commande du compilateur. Et #include "filename" pour inclure le fichier d'en-tête du répertoire courant ou tout chemin relatif au répertoire courant.

sans passer par tous et faire tout manuellement?

Vous pouvez utiliser la recherche & remplacer fonction de votre éditeur préféré

1

Je vais copier le commentaire de Ben et dire que vous devez ajouter un include_path à l'endroit où se trouvent vos fichiers d'en-tête. Ceci est très commun à faire dans un projet

Questions connexes