mingw make ne peut pas gérer les espaces dans le chemin?

J’essaie de comstackr du code, le makefile créé en utilisant qmake. Lorsque je lance mingw32-make, j’obtiens l’erreur suivante:

cd bzip2-1.0.5\ && c:\QtSDK\Desktop\Qt\4.7.3\mingw\bin\qmake.exe c:\Documents an d Settings\user\My Documents\Visual Studio 2010\Projects\meshlab\meshlab\meshla b\src\external\bzip2-1.0.5\bzip2-1.0.5.pro -o Makefile Cannot find file: c:\Documents. Cannot find file: and. Cannot find file: Settings\user\My. Cannot find file: Documents\Visual. Cannot find file: Studio. Cannot find file: 2010\Projects\meshlab\meshlab\meshlab\src\external\bzip2-1.0.5 \bzip2-1.0.5.pro. mingw32-make: *** [bzip2-1.0.5\Makefile] Error 2 

Par l’erreur, il apparaît que mingw32-make ne comprend pas les chemins qui contiennent des espaces. Est-ce vrai? Y a-t-il un moyen de contourner cela?

A partir du guide MinGW “Getting Started” :

MinGW peut avoir des problèmes avec les chemins contenant des espaces, sinon, d’autres programmes utilisés avec MinGW rencontreront des problèmes avec de tels chemins. Par conséquent, nous vous recommandons fortement de ne pas installer MinGW dans un emplacement contenant des espaces dans la référence du nom de chemin. c’est-à-dire que vous devriez éviter d’installer dans un sous-répertoire de “Program Files” ou “My Documents”, ou similaires.

Je pense que les mêmes problèmes rencontrés lors de l’exécution de fichiers exécutables se manifesteront également avec d’autres fichiers. Vous pouvez essayer d’emballer le tout (spécification de fichier) entre guillemets et cela peut fonctionner, mais Windows n’est parfois pas aussi logique que les shells UNIX dans cette zone.


Les espaces dans les noms de fichiers sont maléfiques quand même 🙂

La manière courante de le faire sous Linux / UNIX consiste à échapper chaque barre oblique, par exemple: /c/Documents\ and\ Settings/User Cependant, cela ne fonctionne pas toujours dans MinGW.

Donc, utilisez le nom court (8.3). Vous obtenez le nom abrégé avec la commande Windows (pas MinGW) for %I in () do @echo %~sI peut être . (afficher le répertoire courant, comme pwd), * (fichiers de liste dans le répertoire courant), un chemin de fichier particulier, etc.

Btw, pour copier depuis la terrible fenêtre cmd.exe, cliquez sur l’icône située dans le coin supérieur gauche de la barre de titre, sélectionnez Propriétés, Options et activez le mode QuickEdit. Ensuite, vous pouvez sélectionner du texte avec votre souris. La touche Entrée (ou menu> Modifier> Copier) copie le texte dans le presse-papiers. La touche d’insertion (ou menu> Modifier> Coller) la colle.

Je ne suis pas sûr que cela soit utile ou non (par crainte d’être abaissé), mais j’ai créé un lien sémantique pour éviter les chemins avec des espaces. Je ne suis pas sûr que cela résoudra le problème car dans mon scénario, il a affiché une erreur différente après avoir utilisé le lien sémantique relatif aux pthreads que je n’ai toujours pas pu corriger.

Créer un lien sémantique à l’aide de l’invite de commande:

 mklink /j "C:\newshortcut" "C:\Program Files\Directory with spaces" 

Ensuite, sur la commande que vous souhaitez exécuter, vous utilisez C: \ newshortcut