Comment faire de g++ de recherche pour les fichiers d'en-tête dans un répertoire spécifique?
J'ai un projet (une bibliothèque), qui est subdivisée en un certain nombre de répertoires avec le code en eux. J'aimerais avoir g++ de recherche pour les fichiers d'en-tête dans le répertoire racine du projet, afin que je puisse éviter les chemins d'inclusion différents pour un même en-tête des fichiers entre plusieurs fichiers source.
Principalement, le root/
répertoire contient des sous-répertoires A/
, B/
et C/
, qui ont .hpp
et .cpp
les fichiers à l'intérieur. Si certains fichiers source dans Un voulu inclure file.hpp
, qui a en B, il aurait à le faire comme ceci: #include "../B/file.hpp"
. De même pour un autre fichier source qui est en C. Mais, si lui-même avait des sous-répertoires avec les fichiers nécessaires file.hpp
, alors, il serait incohérent et serait à l'origine d'erreurs si j'ai décidé de déplacer des fichiers (parce que le chemin serait "../../B/file.hpp"
).
Aussi, ce serait nécessaire de travailler à partir d'autres projets, qui résident à l'extérieur de root/
. Je sais déjà qu'il y a une option pour copier manuellement tous mes fichiers d'en-tête dans un défaut-répertoire de recherche, mais j'aimerais le faire de la manière que j'ai décrite.
Edit: tous les programmes qui utilisent la bibliothèque doit compiler uniquement avec g++ prog.cpp lib.a -o prog
. Cela signifie que définitivement paramètre le chemin de g++!
Vous devez vous connecter pour publier un commentaire.
A/code.cpp
A/a/code2.cpp
Compiler à l'aide de:
Edit:
Vous pouvez utiliser des variables d'environnement pour modifier le chemin d'accès g++ regarde pour les fichiers d'en-tête. De l'homme page:
Il existe de nombreuses façons que vous pouvez modifier une variable d'environnement. Sur l'invite bash, vous pouvez le faire:
Vous pouvez bien sûr ajouter ceci dans votre fichier Makefile etc.
Makefile
. Dans ce cas, pourquoi ne pouvez-vous pas ajouter-I /path
indicateur dans votreMakefile
? Pourquoi voulez-vous compilateur pour être exécutée sans options?lib.a
fichier, pas les fichiers d'en-tête. Je pourrais inclure-I /path
en leurs makefile, mais je préfère ne pas.-I /path
chemin d'accès à inclure, gcc trouverez .h les fichiers dans ce chemin-L /path
contient les fichiers de la bibliothèque.a
,.s
oEn-têtes inclus avec #include <> sera recherché dans tous les répertoires par défaut , mais vous pouvez également ajouter votre propre emplacement dans le chemin de recherche avec -je de ligne de commande arg.
J'ai vu ton edit, vous pouvez installer votre les en-têtes des emplacements par défaut généralement
Confirmer avec le compilateur docs si.
c'est simple, utilisez l'option "-B" à ajouter .h les fichiers' dir de chemin de recherche.
E. g. g++ -B /header_file.h your.cpp -o bin/your_command