2017-10-16 5 views
0
Structure

Mon dossier est quelque chose comme ceci:liens symboliques comme inclure des dossiers dans Visual Studio

. 
└─ Projects 
    ├─ MyProject 
    | ├─ lib 
    | ├─ src 
    | └─ include 
    └─ MyOtherProject 
     ├─ src 
     └─ include 

J'ai besoin des en-têtes de MyOtherProject dans MyProject et je crée un lien symbolique avec la commande suivante mklink /D "Projects/MyProject/include/MyOtherProject" "Projects/MyOtherProject/include" mais lorsque vous utilisez Visual Studio il ne reconnaît pas le dossier MyOtherProject dans le répertoire include.

J'ai mis en place la variable Additional Include Directories dans VS sous la forme $(ProjectDir)include qui devrait être évaluée à Projects/MyProject/include. En ce qui concerne ma question, je pense que Visual Studio prend en charge les liens symboliques et si oui, qu'est-ce que je fais de mal?

J'utilise Windows 10 et Visual Studio 2017.

Répondre

0

Vous utilisez des barres obliques avant dans mklink /D "Projects/MyProject/include/MyOtherProject" "Projects/MyOtherProject/include" - barre oblique inverse et test de lien créé dans l'explorateur. Lorsque vous créez des liens symboliques, vous devez penser à la cible par rapport au répertoire de liens. mklink /D "Projects\MyProject\include" "..\MyOtherProject\include" ou donner le chemin absolu complet. À mon avis, la jonction de répertoire (mklink /j "MyProject\include" "MyOtherProject\include") est plus facile à utiliser. Je les utilise pour rediriger les répertoires utilisés par Firefox, Thunderbird et d'autres programmes.

Pour des inclusions supplémentaires j'utiliserais juste include. Vous pouvez même utiliser ..\MyOtherProject\include directement sans lien symbolique ou jonction.

+0

Testé en utilisant des barres obliques en avant et en arrière. J'ai aussi essayé avec des chemins relatifs et absolus. Je l'ai même testé en utilisant '/ J' de'/D' et en redémarrant VS après avoir créé le lien mais toujours rien. Le lien symbolique est créé très bien mais VS ne le comprend pas pour une raison quelconque. –

+0

Juste testé pour inclure un en-tête avec un chemin absolu vers le répertoire d'inclusion symétrique et il semble fonctionner, donc je suppose que c'est un problème avec les 'Additional Include Libraries'. Aussi oui, pour un projet plus petit, je pourrais utiliser des chemins d'inclusion relatifs comme vous l'avez souligné, mais je ne pense pas que ce serait bien pour les grands projets (je peux me tromper) et ce n'est pas la question. –

+0

J'ai vérifié avec VS2013 et cela fonctionne. Les jonctions sont très fiables et transparentes pour la plupart des programmes. Dans votre cas, créez le répertoire de jonction 'cd' dans' Projects' et 'mklink/j" MyProject \ include "" MyOtherProject \ include "'. N'oubliez pas de supprimer d'abord 'MyProject \ include'. Si le lien créé fonctionne comme prévu dans l'explorateur, il est probable que votre projet VS soit mal configuré. –