Целевой шаблон не содержит"%". файл Makefile

Я искал эту проблему в google, но до сих пор не имею никакого способа решить проблему. У меня есть 2 Makefiles: один в качестве примера и один в качестве моего файла. пример:

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

моя файл:

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

С примером файла все в порядке, с моим У меня ошибка:

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

5 ответов


это плохо написанное сообщение об ошибке от Make. Это означает ,что"одно из ваших имен файлов имеет символ, который может быть частью регулярного выражения". Make очень наивен в отношении файловых систем и цитирования. Он не верит, что:

foo:  'The bar.'

относится к строке литерала. Это занимает The одним словом, bar. как еще одно слово, а затем блюет на период. Вместо этого:

foo:  The\ bar\.

или в вашем случае обратная косая черта к периоду в .xcodeproj.


это не сработает:

default:
        echo "Hello world!"

Это:

default:
	echo "Hello world!"

можете ли вы определить разницу?

правильно, первый имеет пробелы, второй имеет вкладки. Один с пробелами даст вам:

Makefile: 2: * * * отсутствует разделитель. Остановка.

и вот почему у нас не может быть хороших вещей...


эта ошибка для меня, потому что у меня было правило вида

foo: bar:
        baz

(обратите внимание на трейлинг :).


убедитесь, что в вашем пути нет": "(т. е. cd ${url} => ://)


опустите строку 11 на https://github.com/mkovalyk/IIViewDeckControllerBinding/blob/master/src/binding/Makefile - ... %' не распознается make