y compris .h fichier à partir d'une autre application/répertoire
J'ai quelques .h les fichiers comme suit (sur Linux)
Source/Server/connect.h
Source/Server/message.h
...
Je suis en train d'élaborer une autre application qui a besoin de deux .h les fichiers mais il est dans un répertoire différent
Source/App2/..
Comment puis-je inclure le connecter.h fichier dans le App2 demande, considérant que j'utilise perforce et tout le monde travaillant sur l'application de leur propre copie de l'ajout d'un chemin d'accès absolu à l'inclure la bibliothèque peut-être pas une bonne idée, mais je ne suis pas sûr.
EDIT:
J'utilise un système propriétaire de construire des mécanismes pour bâtir le code ne sera donc pas en mesure de spécifier les options de gcc directement.
Vous devez vous connecter pour publier un commentaire.
Vous pouvez
#include
un chemin d'accès relatif à la fichiers:ou vous pouvez ajouter un drapeau pour indiquer au compilateur de regarder dans l'autre répertoire. Pour gcc, vous pouvez utiliser
-I../Server
; pour Visual C++, vous pouvez utiliser/I"../Server"
; d'autres compilateurs, j'en suis sûre, ont leurs propres drapeaux à cet effet.Je pense que la deuxième est meilleure dans la plupart des cas, car il vous permet de déplacer vos projets autour tandis que vous aurez seulement besoin de modifier le chemin d'inclusion dans un seul endroit (le makefile ou les feuilles de propriétés).
Que sur l'ajout d'inclure le chemin de recherche pour qu'il le compilateur gcc c'est-je l'interrupteur.
Je suggère la suppression des chemins de la
#include
consolidés. Comme d'autres l'ont dit, mettre les chemins d'accès dans les paramètres du compilateur. Résoudre le chemin des différences dans lamakefile
ou utiliser des variables d'environnement (peut-être besoin de faire les deux).Mon expérience est que les fichiers se déplacer. Tout ce qui n'est pas utiliser les chemins relatifs briser la construction (ce qui est très mauvais).
en plus statique des chemins relatifs, vous pouvez également jouer avec le préprocesseur chicane. Une technique que j'ai vu utilisé à Adobe pour la croix-plate-forme de code, a été de faire quelque chose comme ceci:
Alors que la plateforme problème n'est pas votre problème, vous pouvez définir les chemins d'accès relatifs basé sur la configuration de build si vous voulez et la config changements se produisent dans un seul endroit au lieu de plusieurs et les fichiers de client que tirer de ce dont ils ont besoin. L'inconvénient est que tous les outils que vous utilisez pour naviguer dans les fichiers d'entête (clic droit et ainsi de suite) sont arrosé.
Vous pouvez modifier les directives du compilateur comme ci-dessus, ou de modifier le chemin d'accès au sein de votre code (relative ou absolue).
Je suggère que vous considérez comme les meilleurs endroits pour les en-têtes et les fichiers objets (et des bibliothèques) pour tous vos projets et de les configurer.
Si vous avez standard include et lib lieux que vous pourrez simplifier le développement en bas de la route