web-dev-qa-db-fra.com

Cygwin fait une erreur: *** le motif cible ne contient pas de "%"

J'ai eu cette erreur lors de la (re) construction, en utilisant la version cygwin make.exe: 3.81.

Error : *** target pattern contains no `%'.
36
Reno

Cette erreur est due à la présence d'un ":". Par conséquent, il ne prend plus en charge les chemins Windows. Vous devez télécharger la version 3.80 et remplacer le make.exe dans le répertoire \bin.

Apparemment, il a aussi besoin de cygintl12.dll.

39
Reno
  • restauration pour faire 3,80 ( Geant4 )

    • cd /usr/bin
    • mv make.exe make_381.exe
    • wget http://geant4.cern.ch/support/extras/cygwin/make.exe
    • chmod +x make.exe
  • installez libintl2 à partir de l'installation de cygwin pour le cygintl-2.dll requis

27
papahabla

J'ai eu la même erreur en essayant de construire un projet sous Linux ou OSX, qui était auparavant construit sur une machine Windows et qui contenait des fichiers .o.d dans le dossier de sortie. 

Une fois que j'ai supprimé manuellement les fichiers .o.d , le problème a été résolu. Apparemment, la commande "Nettoyer" de mon IDE (CodeLite dans ce cas) ne supprimait pas les fichiers .o.d .

9
Hristo Pavlov

Probablement dû à la présence de deux points après une lettre de lecteur. Par exemple envisager

build : $(NativeHeaders)/*

Si 

NativeHeaders=../../../cpp/generated

alors tout va bien, mais

NativeHeaders=C:/dev/folder/cpp/generated

se traduit par l'erreur que vous obtenez.

5
Bathsheba

Je recevais cette erreur parce que je n'avais pas de caractère de tabulation (\ t) au début de mes commandes. J'avais expandtab dans mon ensemble vim, il remplaçait donc un caractère de tabulation par 4 espaces. Quand j'ai désactivé ça et changé les espaces en onglet, ça a été corrigé

3
Reza S

J'ai eu l'erreur target pattern contains no '%' lors de la construction avec le NDK Android en utilisant cygwin.

J'ai trouvé le lien suivant utile:

Erreurs générées par Make

  • «Motif cible manquant. Arrêtez.' 
  • «Modèles de cibles multiples. Arrêtez.'
  • Le modèle cible ne contient pas de «%». Arrêtez.' 
  • «Règles de modèle statiques et implicites mixtes. Arrêtez.'

Celles-ci sont générées pour des règles de modèle statique mal formées. Le premier signifie qu’il n’ya pas de motif dans la section cible de la règle; le second signifie qu'il y a plusieurs motifs dans la section cible; le troisième signifie que la cible ne contient pas de caractère de motif (%); et le quatrième signifie que les trois parties de la règle de modèle statique contiennent des caractères de modèle (%) - seules les deux premières parties le devraient. Si vous voyez ces erreurs et que vous n'essayez pas de créer une règle de modèle statique, vérifiez la valeur des variables de vos listes cible et prérequise pour vous assurer qu'elles ne contiennent pas de deux points. Voir Syntaxe des règles de modèle statique .

Et ainsi, ma solution incluait la modification de mes variables système du format Windows au format Unix, comme suit:

  • Au lieu de C:\Android\android-ndk-r10c, j’ai utilisé /cygdrive/c/Android/android-ndk-r10c pour le chemin NDK.

De même, j'ai changé le chemin du projet NDK en /cygdrive/c/Android/project/src/main/jni.

2
Luis

Dans mon cas, j'utilisais CMake sous Cygwin lorsque j'ai eu cette erreur. Il s'est avéré que la version Windows de CMake a été exécutée. Par la suite, les chemins Windows ont été utilisés dans le fichier make. J'ai installé la version de CMake de Cygwin via le programme d'installation et je l'ai fait fonctionner.

1
Tsjakka

J'ai eu ce problème sous Linux lorsque le répertoire de construction contenait un ":" en raison d'une vérification Mercurial qui créait un répertoire nommé "serveur: port".

1
paulm

J'ai dû modifier les éléments suivants dans mon fichier make pour qu'ils soient compatibles avec Make_381:
avant:
ARDUINO_BASE_DIR = C:\programmes/arduino

à présent:
ARDUINO_BASE_DIR = \\ programmes/arduino

0
Gulzt

Dans mon projet, le dossier obj était probablement corrompu et cette erreur me causait. Dossier obj supprimé manuellement. Ensuite, ndk-build s'est bien terminé.

0
Roy

Essayez ceci si vous utilisez Eclipse C/C++ et référencez des fichiers de Cygwin sous Windows, assurez-vous que c:/cygwin/bin ou c:/cygwin64/bin vient après vos outils de compilation préférés dans votre environnement Windows Path.

Exemple: Path =; C:\yagarto\bin; C:\yagarto-tools\bin; C:\cygwin64\bin;

Une fois les modifications apportées, quittez Eclipse et redémarrez-le pour qu'il prenne effet (le simple fait de redémarrer Eclipse sans quitter ne résoudra pas le problème.

0
Michele