web-dev-qa-db-fra.com

Le modèle cible ne contient pas de '%'. Makefile

J'ai cherché ce problème dans google, mais je n'ai toujours aucun moyen de résoudre un problème. J'ai 2 Makefiles: un comme exemple et un comme fichier. Exemple:  

BINDDIR=/src/binding
XBUILD=/Applications/Xcode.app/Contents/Developer/usr/bin/xcodebuild
PROJECT_ROOT=XMBindingLibrarySample
PROJECT=$(PROJECT_ROOT)/XMBindingLibrarySample.xcodeproj
TARGET=XMBindingLibrarySample
BTOUCH=/Developer/MonoTouch/usr/bin/btouch

 XMBindingLibrary.dll
libXMBindingLibrarySample-i386.a:
$(XBUILD) -project $(PROJECT) -target $(TARGET) -sdk iphonesimulator -configuration Release clean build -mv $(PROJECT_ROOT)/build/Release-iphonesimulator/lib$(TARGET).a $@
libXMBindingLibrarySample-armv6.a:
$(XBUILD) -project $(PROJECT) -target $(TARGET) -sdk iphoneos -Arch armv6 -configuration Release clean      build -mv $(PROJECT_ROOT)/build/Release-iphoneos/lib$(TARGET).a $@

libXMBindingLibrarySample-armv7.a:
$(XBUILD) -project $(PROJECT) -target $(TARGET) -sdk iphoneos -Arch armv7 -configuration Release clean build -mv $(PROJECT_ROOT)/build/Release-iphoneos/lib$(TARGET).a $@

libXMBindingLibrarySampleUniversal.a: libXMBindingLibrarySample-armv7.a libXMBindingLibrarySample-i386.a
lipo -create -output $@ $^

XMBindingLibrary.dll: AssemblyInfo.cs XMBindingLibrarySample.cs extras.cs libXMBindingLibrarySampleUniversal.a

$(BTOUCH) -unsafe --outdir=tmp -out:$@ XMBindingLibrarySample.cs -x=AssemblyInfo.cs -x=extras.cs --link-with=libXMBindingLibrarySampleUniversal.a,libXMBindingLibrarySampleUniversal.a

clean:
-rm -f *.a *.dll

Mon fichier:

BTOUCH=/Developer/MonoTouch/usr/bin/btouch
BINDDIR=/src/binding
XBUILD=/Applications/Xcode.app/Contents/Developer/usr/bin/xcodebuild
PROJECT_ROOT=IIViewDeckControllerSample
PROJECT=$(PROJECT_ROOT)/IIViewDeckController.xcodeproj
TARGET=IIViewDeckController

all: IIViewDeckController.dll

libIIViewDeckController-i386.a:
$(XBUILD) -project $(PROJECT) -target $(TARGET) -sdk iphonesimulator -configuration Release clean build -mv $(PROJECT_ROOT)/build/Release-iphonesimulator/lib$(TARGET).a $@

libIIViewDeckController-armv7.a:
$(XBUILD) -project $(PROJECT) -target $(TARGET) -sdk iphoneos -Arch armv7 -configuration Release clean build  -mv $(PROJECT_ROOT)/build/Release-iphoneos/lib$(TARGET).a $@

libIIViewDeckControllerUniversal.a: libIIViewDeckController-armv7.a libIIViewDeckController-i386.a
lipo -create -output $@ $^

IIViewDeckController.dll: AssemblyInfo.cs APIDefinition.cs StructsAndEnums.cs libIIViewDeckControllerUniversal.a
$(BTOUCH) -unsafe  -out:$@ APIDefinition.cs -x=AssemblyInfo.cs -x=StructsAndEnums.cs --link-with=libIIViewDeckControllerUniversal.a,libIIViewDeckControllerUniversal.a

clean:
-rm -f *.a *.dll

Avec l'exemple de fichier, tout va bien, avec le mien, j'ai l'erreur:

Makefile:4: *** target pattern contains no `%'.  Stop.
make: *** [all] Error 2
11
Mike

C'est un message d'erreur mal écrit de Make. Cela signifie "l'un de vos noms de fichier avait un caractère qui pourrait faire partie d'une expression régulière". Make est très naïf à propos des systèmes de fichiers et des citations. Il ne croit pas que:

foo:  'The bar.'

fait référence à une chaîne littérale. Il faut The comme un mot, bar. comme un autre mot, puis des barfs sur la période. Faites ceci à la place:

foo:  The\ bar\.

ou dans votre cas, barre oblique inverse à la période dans .xcodeproj.

34
Charles Merriam

Cela ne fonctionnera pas:

default:
        echo "Hello world!"

Cette volonté:

default:
	echo "Hello world!"

Pouvez-vous repérer la différence?

C'est vrai, le premier a des espaces, le second a des onglets . Celui avec des espaces vous donnera:

Makefile: 2: *** séparateur manquant. Arrêtez.

Et c'est pourquoi nous ne pouvons pas avoir de belles choses ...

10
Jeroen

Cette erreur est survenue parce que j'avais une règle de la forme

foo: bar:
        baz

(notez le : de fin).

6
Radon Rosborough

Assurez-vous qu'il n'y a pas de : dans votre chemin, c'est-à-dire cd ${url} => ://. Si c'est le cas, échapper comme ça:

cd ${url} => \://
1
RzR

Résolu: , Allez simplement à l'onglet de projet qu'il présentera dans la section d'onglets verticaux puis allez à général et changez simplement l'emplacement du projet 

0
sagar bade