J'ai une bibliothèque et une application console qui utilise une bibliothèque. La bibliothèque a un dossier avec les fichiers source et en-tête.
Mon projet se trouve dans un répertoire enfant/interne, mais le répertoire de la bibliothèque que je souhaite inclure se trouve dans un répertoire parent/supérieur.
Mon répertoire de projet:
H:\Gmail_04\gsasl-1.0\lib\libgsaslMain
Les fichiers inclus sont ici:
H:\Gmail_04\gsasl-1.0\src
Comment utiliser les chemins relatifs au répertoire du projet pour inclure les dossiers situés dans un répertoire parent/supérieur?
Si je vous ai bien compris, vous avez besoin de ..\..\src
Au lieu d'utiliser des chemins relatifs, vous pouvez également utiliser les macros prédéfinies de VS pour atteindre cet objectif.
$(ProjectDir)
pointe vers le répertoire de votre fichier .vcproj
, $(SolutionDir)
est le répertoire du fichier .sln
.
Vous obtenez une liste des macros disponibles lors de l’ouverture d’un projet, allez à
Propriétés → Propriétés de la configuration → C/C++ → Général
et cliquez sur les trois points:
Dans la boîte de dialogue suivante, appuyez sur Macros pour afficher les macros prédéfinies par le Studio (consultez MSDN pour connaître leur signification) :
Vous pouvez utiliser les macros en tapant $(MACRO_NAME)
(notez les crochets $
Et arrondis ).
J'ai déjà utilisé une syntaxe comme celle-ci:
$(ProjectDir)..\headers
ou
..\headers
Comme d'autres l'ont fait remarquer, le répertoire de départ est celui dans lequel se trouve votre fichier de projet (vcproj
ou vcxproj
), pas l'emplacement de votre code principal.
Par défaut, tous les chemins que vous définissez seront relatifs. La question est: par rapport à quoi? Il y a plusieurs options:
Veuillez noter que suite à une macro telle que $ (SolutionDir), il n'est pas nécessaire d'ajouter une barre oblique inversée "\". Utilisez simplement $ (SolutionDir) mylibdir\mylib.lib . Si vous ne pouvez tout simplement pas le faire fonctionner, ouvrez le fichier de projet de l'extérieur du Bloc-notes et vérifiez-le.