İngilizceFransızcaİspanyolca

Ad


OnWorks favicon'u

makepp_incompatibilities - Bulutta Çevrimiçi

Makepp_incompatibilities'i Ubuntu Online, Fedora Online, Windows çevrimiçi emülatörü veya MAC OS çevrimiçi emülatörü üzerinden OnWorks ücretsiz barındırma sağlayıcısında çalıştırın

Bu, Ubuntu Online, Fedora Online, Windows çevrimiçi emülatörü veya MAC OS çevrimiçi emülatörü gibi birden fazla ücretsiz çevrimiçi iş istasyonumuzdan birini kullanarak OnWorks ücretsiz barındırma sağlayıcısında çalıştırılabilen makepp_incompatibilities komutudur.

Program:

ADI


makepp_incompatibilities -- makepp ve GNU make arasındaki uyumsuzluklar

TANIM


Makepp, GNU yapımına mümkün olduğunca yakın olacak şekilde tasarlanmıştır.
(<http://www.gnu.org/software/make/manual/make.html>). GNU otomatik araçları
(<http://www.gnu.org/software/automake/manual/automake.html>), CMake
(<http://www.cmake.org/>), Ön Yapım (http://industriousone.com/premake> ve yoruma bakın
aşağıda) veya el yapımı eski derleme sistemleri makepp ile oluşturulabilir olmalıdır. Bu böyledir
projeleri zahmetsizce taşıyabilirsiniz. Ya da hepsinden zevk almak istemiyorsanız
makepp'in avantajlarından yararlanırken (örneğin, başkaları projenizi GNU make ile oluşturmaya devam edebilir).
gelişiminiz için güvenilirlik avantajından yararlanın.

Ancak, felsefedeki farklılık nedeniyle, bazı GNU markaları veya POSIX markaları
(<http://pubs.opengroup.org/onlinepubs/009695399/utilities/make.html>) özellikler olamaz
desteklenir. Bir kısmı zamanımız olmadığı için uygulanamadı. Çoğu
GNU make ile arasındaki farklar oldukça tekniktir ve nadiren sorunlara neden olur. ne yazık ki
geleneksel ürünlerin eksikliklerine yönelik geçici çözümler giderek daha karmaşık hale geliyor,
ve makepp'e zor anlar yaşatıyorlar.

Özetle, kutudan çıkmazsa şunu deneyin:

makepp --no-warn makepp_simple_concateration=1 makepp_percent_subdirs=1 \
--build-check=target_newer --son şans kuralları --no-remake-makefiles

Bu başarılı olursa, bu argümanları birer birer ortadan kaldırmayı deneyebilirsiniz. Ama bu başarısız olursa,
eklemeyi deneyin:

--geleneksel-özyinelemeli-make

Bu da başarısız olursa, yapı sisteminin makepp ile işbirliği yapması için biraz ince ayar yapılması gerekir. Hatta
burada açıklanan bazı seçenekler bir şeyi inşa edilebilir hale getiriyorsa, yine de uyarlamanız önerilir
şeyler biraz, böylece her iki markayla da kutudan çıkar çıkmaz uyumlu hale gelirler.

Zorlama Daha POSIX or GNU yapmak uygunluk


İşte birçok eski yapı sisteminin çalışmasını sağlamak için bazı komut satırı olanakları
değişiklik yapmadan. makepp'in GNU make'nin davranışını tam olarak taklit etmesine neden olurlar.

uygunluk üzerinden the seçenek: "--build-check=target_newer"
Varsayılan olarak makepp, bağımlılıklardan herhangi biri varsa, tüm hedefleri yeniden oluşturmaya çalışır.
son derlemeden bu yana değiştiyse veya komut değiştiyse (bkz. makepp_build_check
detaylar). Normalde istediğin şey bu. Ancak bazen hedefi istemezsiniz
makepp'in kontrolü dışında değiştirilmişse yeniden oluşturulabilir (örn.
veya dosyayı yapmak için manuel olarak bir program çalıştırarak). makepp'i kullanmaya zorlayabilirsiniz.
Yalnızca hedeflerden herhangi biri öncekinden daha yeniyse yeniden oluşturan geleneksel make algoritması
bağımlılıklar, bu seçeneği komut satırına ekleyerek.

uygunluk üzerinden the seçenek: "--dont-build=config.status"
Kendilerini otomatik olarak yapılandırmaya çalışan veya başka şeyler yapan paketler vardır.
istenmedikçe yok sayar, örneğin:

config.status : yapılandır
./config.status --tekrar kontrol et

yapılandır : aclocal.m4'te yapılandır.
otomatik konf

Çoğu insanda "autoconf" kurulu bile yoktur, bu nedenle her şeyi bilinçli bir şekilde
kurallar, makepp'in yaptığı gibi başarısız olacaktır. Ne olduğunu anlarsanız, bu seçenek bunu engeller.
inşa etmek değil.

uygunluk üzerinden the seçenek: "--son-şans-kuralları"
Varsayılan kurallar (kalıp bağımlılığı olmayan kalıp kuralları) normalde desteklenmez.
Makepp, mevcut dosyalara dayalı olarak tüm kuralları somutlaştırır, böylece her şeyden haberdar olur.
oluşturulabilecek dosya. Ne yazık ki bu şekilde bir kalıbın nasıl başlatılacağını bilmiyor
desen bağımlılığı olmayan kural. :last_chance mekanizması bunu kısmen giderir.
Bunun eski makefile'ler için yeterince iyi olduğu durumlarda, bu seçenek onu global olarak açmaya izin verir.

uygunluk üzerinden the seçenek: "--uyarı yok"
Bu, sonucu iyileştirmez. Makepp birçok şey için uyarı mesajları verecek
geleneksel Unix'in çekinmeden kabul etmesini sağlar. Bunun nedeni var
bunları makepp ile yapmanın daha iyi yolları. Bu uyarılar sizi rahatsız ediyorsa kapatabilirsiniz.
Bu seçenek ile.

uygunluk üzerinden the seçenek: "--hibrit-özyinelemeli-yap"
Yinelemeli make çağrıları genellikle güvenli olmayan bir uygulama olarak kabul edilir (bkz.
hiyerarşik yapılar için sistem "detaylar için makepp'te), ancak bunlar son derece yaygındır
mevcut makefile'lar. Makepp, geriye dönük uyumluluk için özyinelemeli oluşturmayı destekler; Yeni
makefiles için, "load_makefile" ifadesini veya makepp'in örtük ifadesini kullanmak çok daha iyidir.
makefile yükleme mekanizması.

Varyant yapıları için depoları kullanabilmek ve özyinelemeli hale getirmeye yardımcı olmak için
make daha güvenli hale getirme çağrıları, makepp normalde kendisini özyinelemeli olarak çağırmaz
söylesen de olur. Bunun yerine, bir alt süreç üst süreçle iletişim kurar ve
asıl yapı, ana süreç tarafından yapılır.

Bu çoğu durumda işe yarar, ancak aynı dosyadan birkaç makefile çağıramazsınız.
dizin, örneğin aşağıdakiler çalışmayacaktır:

hedef: bağımlılıklar
$(MAKE) -f other_makefile hedefleri

Bu durumda makepp 2. makefile yüklediğini fark eder ve şikayet eder. Bu seçenek ile
bunun yerine, ek makefile'lerden geleneksel inşa etme yöntemine geri dönecektir.
her biri ayrı bir makepp işlemi.

Not: Teknik olarak birkaç makefile yüklemek sorun olmaz, ancak genellikle
aynı sahte hedef adları. Bunu ayrı tutmak, makepp'in tamamen yeniden tasarlanması anlamına gelir.
dahili. Ancak, bu işe yarayacak, ancak eşdeğer değil:

hedef: bağımlılıklar
cd alt dizini && $(MAKE) -f other_makefile hedefleri

uygunluk üzerinden the seçenek: "--geleneksel-özyinelemeli-make"
Bazen, özellikle özyinelemeli çağrılar kullanılıyorsa, önceki seçenek yeterli değildir.
çelişkili seçenekler Makepp yalnızca bir genel seçenek kümesi kullanır, bu nedenle bir alt yapı
diğer makefile'ler için de geçerli olacağından, bunları değiştirmelerine izin verilir.

Bu seçeneği komut satırına eklemek, aşağıdaki istenmeyen yan etkilere neden olur:

· Özyinelemeli oluşturmalar, üst öğe yapsa bile dahili olarak paralel olarak yürütülmez.
gmake'den farklı olarak, süreç sayısının genel bir koordinasyonu yoktur. Bu irade
uygulanamaz çünkü bu çalışma şekli makepp'in bir tasarım hedefi değildir.

· Recursive make işlemleri depolar hakkında hiçbir şey bilmez.

· Her özyinelemeli make işlemi, çağrıldığı dizinde kendi günlük dosyasını üretir.
tüm yapı için bir günlük dosyası üretmek yerine.

· Makepp genellikle geleneksel maket'in gerekli gördüğünden daha fazlasını oluşturduğundan ve birçok
yapı sistemleri her yöne özyinelemeli çağrılar sağlar, bu sonsuz sonuçlara yol açabilir
özyineleme. Makepp 50 turdan sonra freni çekecek ve nasıl artıracağınızı anlatacak.
bu, gerçekten bu kadar derin yuvalamanız varsa.

"--traditional-recursive-make" seçeneğiyle bile ortam değişkenleri
"MAKEOVERRIDES" ve "MFLAGS" ayarlanmaz ve yok sayılır, bu nedenle
bunlar çalışmayacak.

A ön yapım oluşturulan Makefile aynı şekilde bir alt-yap çağrısına sadece komik bir sarmalayıcıdır
dizin. Bazı proje hedefiniz varsa XYZ gibi bir çizgi olacak

@${MAKE} --no-print-directory -C . -f XYZ.make

Bu durumda, doğrudan çağırarak "--traditional-recursive-make" seçeneğinden kaçınabilirsiniz.
makepp ile "-f XYZ.make" seçeneği.

uygunluk olmadan the seçenek: "--işler=n"
Eski makefile'ler bazen tüm bağımlılıkları listelemez, sırasına göre
onları zamanında yapmak için yürütme. Bu durumda makepp önce bir kural çağırmayı başarabilir.
tüm bağımlılıkları yapılmıştır. O zaman sonuçlar daha azıyla daha iyi olabilir, hatta hiç
paralel yürütme

uygunluk üzerinden the değişken: "makepp_simple_concatenation=1"
Rc stili değiştirme, makepp'in metne değişken değiştirme gerçekleştirmesinin varsayılan yoludur
dizeler çünkü çok nadiren eski makefile'leri bozar ve genellikle yenilerde kullanışlıdır.
makefiles. Bununla birlikte, ikamede ara sıra uyumsuzluklar ortaya çıkarmaktadır.
boşluklarla çevrili olmayan değişkenler. Örneğin,

INCLUDE_PREFIX := -I/bazı/include/dir -I
DAHİL := $(INCLUDE_PREFIX)/diğer/include/dir

rc- ise "INCLUDES" ayarını "-I/some/include/dir/other/include/dir -I/other/include/dir" olarak ayarlar
stil değiştirme etkinleştirilir, oysa GNU make onu
"-I/some/include/dir -I/other/include/dir". Örneğin, Redis 2.6.5'i derlerken,
"printfgcc"yi çalıştırın. İki komutun böylesine komik bir şekilde sıralanması, güçlü bir göstergedir.
anlambilim yapmak için bu değişkenin geri çekilmesi gerekir.

Bir değişkendeki boşlukların işlenmesinde de bir uyumsuzluk vardır:

boş :=
T := -o $(null) # T -o ve ardından bir boşluk içerir.
ÇIKIŞ DOSYASI = $(T)çıktı dosyası

rc tarzı değiştirme etkinleştirilirse "OUTFILE" öğesini "-ooutfile" olarak ayarlarken GNU
"-o outfile" olarak ayarlayacaktır.

Bu uyumsuzlukların her ikisi de "makepp_simple_concatenation" ayarlanarak kaldırılır.
değişken. Ancak, "makepp_simple_concatenation" ile bile makepp'in hala
bazı durumlarda boşlukları uyumsuz olarak ele alır:

T := -o # Bu yorumu silmeyin.

GNU, "T" kümelerini "-o" ve ardından bir boşluk içerecek şekilde yapar, oysa makepp
yine de takip eden boşluk. Sondaki boşluğu istiyorsanız, ayarlamalısınız
"makepp_simple_concatenation" ve ayrıca bir kukla içeren tekniği kullanarak "T"yi ayarlayın
yukarıda gösterildiği gibi "null" gibi bir değişken.

Geçici çözüm seçenek "--no-remake-makefiles"
Tipik açık kaynak, makefiles oluşturmak için "configure" çağrılmasını gerektirir. Ama sonra bunlar
makefiles, bazı komutları çağırarak makefile'ı yeniden oluşturmak için kurallar içerebilir. Makepp yapacak
mutlu bir şekilde uyun ve kurala göre güncelleyin. Ama bazen bu zararlıdır, bu yüzden
sadece atla.

uygunluk üzerinden the değişken: "makepp_percent_subdirs=1"
Varsayılan olarak, bir kalıp kuralındaki "%" dizinlerle eşleşmez. Bu, aşağıdaki gibi bir kuralın olduğu anlamına gelir
bu:

%.o: %.c
$(CC) $(CFLAGS) -c $(girdi) -o $(çıktı)

"../shared/xyz.c" gibi dosyalara uygulanmaz. içindeki dosyalarla eşleşmesini istiyorsanız
alt dizinleri de, ardından komut satırında "makepp_percent_subdirs=1" değişkenini ayarlayın
veya bir makefile başlangıcına yakın.

uygunluk üzerinden the çevre değişken: $MAKEPP_IGNORE_OPTS
Bazen eski özyinelemeli çağrılar, makepp'in anlamadığı seçeneklerden geçer.
Umarım seçenek önemli değildir, ancak makepp'in çalışmasını engeller. Bununla
ortam değişkeni, makepp'ten belirli seçenekleri sessizce yok saymasını isteyebilirsiniz. Değer
4 varyantta olabilen, boşlukla ayrılmış bir seçenekler listesi olacaktır:

--ve kazandırdı=x
Tartışma bekleyen uzun bir seçenek. Bu gerçek eşitler aracılığıyla beyan edilmelidir
işareti, gerçek kullanım boşlukla da ayrılabilse de, "--long=bla" veya
"--uzun bla".

--ve kazandırdı
Tartışmasız uzun bir seçenek.

-sx Bir argüman bekleyen kısa bir seçenek. Bu gerçek eklenerek beyan edilmelidir.
seçenekten hemen sonra bir şey olsa da, gerçek kullanım şu şekilde de ayrılabilir:
boşluk, "-sbla" veya "-s bla".

-s Tartışmasız kısa bir seçenek.

Örneğin makepp'in -R seçeneğini bir argüman olmadan geçersiz kıl ve gmake'in hata ayıklamasını kabul et
argümanlı seçenek:

dışa aktar MAKEPP_IGNORE_OPTS='-R --debug=x'

uyumsuzluklar o gerektirir Makefile değişiklikler


· Açıkça make çağrısı yapan makefile'ler makepp'in her şeyi kendisi oluşturmasını engeller.
Ne yazık ki Perl'in kendi "ExtUtils::MakeMaker" aşağıdaki iki biçimden ikincisini taahhüt eder:
6.56 sürümüne kadar bu hata (Perl 5.12.1):

alt dizin:
cd alt dizini; Yapmak

YAP = yap

· "VPATH" değişkenini bir değere ayarlamak, dolaylı olarak "vpath % değeri"ni çağırır. "v yolu"
ifadeler depo mekanizması ile taklit edilir. Peki, gmake ikameleri nerede
vpath'de bulunan dosyanın yolu, makepp bunun yerine onu sembolik olarak
nerede gerekli. Böylece makepp, genellikle değiştirilmemiş bir dize sağlayacaktır.
problem değil.

Bir vpath içindeki hedefler desteklenmez. (Gmake, daha yeni olup olmadıklarını dikkate alır.
bağımlılıkları, ancak değilse, hedef geçerli dizinde yeniden oluşturulacak
-- oldukça tutarsız.) vpath'lerin ayarını kaldırmak desteklenmez.

· Makefile'de daha sonra bulunan bir kalıp kuralı, daha önce mevcut olanı geçersiz kılar.
Bu, GNU make'den geriye doğru.

· Yerleşik örtülü kurallar seti, GNU'nun yaptığından biraz farklıdır,
değişken isimleri büyük ölçüde uyumlu olsa da. Yerleşik kurallar
C/C++/Fortran programlarını başarıyla derler ve aslında
bazı durumlarda da uygun kütüphaneler. Modula-2 ve RatFor ve diğer nadir için destek
diller kasıtlı olarak mevcut değil, çünkü GNU ile ilgili sorunlarla karşılaşmaya devam ettim
Bu diller için uzantıları yanlışlıkla yeniden kullandığımda make'nin kuralları.

· "+" eylem öneki sessizce yok sayılır.

· Arşiv üyeleri desteklenmez ve ilişkili otomatik değişkenler de desteklenmez
$%, "$(%D)" ve "$(%F)".

· SCCS desteği yoktur.

· Değişken atamalarında baştaki ve sondaki boşluklar yoksayılır (
boşluktan sonra bir yorum gelir). Boşluk işleme hakkında daha fazla ayrıntı için
uyumsuzluklar için makepp_variables içindeki "Değişkenlerde boşluk" konusuna bakın.

· Makepp, "include" ifadesiyle birlikte verilen dosyaları yeniden oluşturmaya çalışmaz.
makefile, include ifadesi görülmeden önce bunları oluşturmak için bir kural içerir.
(Ancak, makefile'ın kendisini yeniden oluşturmaya çalışacaktır.) Bu normalde şu amaçlar için kullanılır:
işleme, dosya bağımlılıklarını içerir ve yapmadığınız için makepp ile kullanışlı değildir.
neyse bunu yapmak lazım.

· "SHELL" değişkeni şu anda kısmen yok sayılır. Makepp her zaman kullanır / Bin / sh
olmadıkça /usr/xpg4/bin/sh or /sbin/xpg4/sh bulunursa veya "KABUĞU" dışa aktarmazsanız
makefile'nizdeki değişken. Ancak bunu yaparsanız, komut ayrıştırıcı tam olarak çalışmayabilir.
Shell komutunuzun ne yaptığını anlayın. Windows Strawberry veya ActiveState Perl'de
bunun yerine SHELL değişkeninizi ayarlamanız gerekir önce makepp'i çağırıyor.

· Makefile üzerindeki herhangi bir şeyin bağımlılıkları hala çalışır, ancak genellikle gereksizdir.
Bu genellikle derleme seçenekleri değiştiğinde yeniden oluşturmaya zorlamak için kullanılır. Makepp bilir
derleme komutları makefile'de özel bir şey olmadan değiştiğinde; depolar
bu dosya bazında. Makefile'ı değiştirirseniz, tam olarak hangisi olduğunu bilir.
dosyaların yeniden derlenmesi gerekiyor.

· Ara dosyalar silinmez. (Makepp tüm dosyaya sahip olmakta ısrar ettiği için
tarihler son derlemedekiyle aynı olmalıdır, ara dosyaların tümü
mevcut veya aksi takdirde yeniden inşalar gerçekleşecek.) Verilen özel bir statü yoktur.
ara dosyalar.

· Desteklenen tek özel hedef ".PHONY" ve kısmen ".SONUÇLAR"dır. NS
kalanlar sadece iç içedir.

Özellikle, GNU make aşağıdaki özel hedeflere sahiptir:

.SONEKLER
Makepp, ".SUFFIXES" özel durumu dışında ".SUFFIXES"i yok sayar.
bağımlılıklar, bunun gibi:

.SONEKLER:

bu, varsayılan kurallarından hiçbirini yüklememesini söyler.

.ORTA, .İKİNCİ, .KIYMETLİ
Ara dosyalara özel bir statü tanınmaz ve bu nedenle bu hedefler
anlamlı.

.GÖRMEZDEN GELMEK
Bu hedef göz ardı edilir. Hataları yoksaymak istiyorsanız, "ignore_error" kelimesini girin.
(veya bir eksi işareti) çıkış durumu yoksayılacak komutun önüne.

.SESSİZ
Bu hedef göz ardı edilir. Komutların yankılanmamasını istiyorsanız, "noecho" kelimesini koyun.
(veya "@" karakteri) yankılanmaması gereken komutun önünde,
veya makepp için "--silent" seçeneğini kullanın.

.DELETE_ON_ERROR
.EXPORT_ALL_VARIABLES
.NOİHRACAT
.POSIX
.VARSAYILAN
Bu hedefler desteklenmez ve basitçe göz ardı edilir.

· GNU yapma işlevleri "değerlendirme", "tat" ve "değer" şu anda desteklenmemektedir. Sen
eval ile aynı şeyi "$[...]" ile daha basit bir şekilde başarabilir
değişken veya fonksiyon genişletme.

· Çift kolon kuralları tam olarak desteklenmez. (Onlar olamaz: makepp'in paradigmasında,
Bir hedefi güncellemenin birden fazla yolu olamaz.) Halihazırda, her ardışık
belirli bir hedef için çift kolon kuralı, komut dizesini ve bağımlılığını ekler
bu hedef için komut dizesini ve bağımlılık listesini listeleyin. Örneğin, eğer
bunu yaz:

bir :: b
& kedi b -oa

# Daha sonra makefile'nizde:
AC
&cat c -o >>a

bu kesinlikle aynı sen yazmışsın

bir: bc
& kedi b -oa
&cat c -o >>a

Bu kesinlikle çift kolon kurallarının amaçlandığı şey değildir ve her zaman olmayacaktır.
çalışır, ancak "temiz" gibi hedefler veya
ExtUtils::MakeMaker, makefiles içine koyar. Başka bir şey için buna güvenmeyin
eski makefile'lerden daha fazla.

· "$(joker karakter )" işlevi yalnızca var olan dosyalarla değil, aynı zamanda
henüz var olmayan, ancak makepp'in o sırada gördüğü bir kuralı olan
"$(joker karakter )" işlevi değerlendirilir.

· "define" deyimi desteklenir, ancak ondan önce gelen "@" ifadesinin işlenmesi yapılır
farklı. Şu anda makepp'de, çok satırlı bir değişkenin önünde "@"
değer yalnızca ilk satırın yankılanmasını bastırır. Örneğin,

yankı çizgilerini tanımla
&echo line1 -o $@
&echo line2 -o>>$@
Endef

x:
@$(yankı çizgileri)

GNU make'de olduğu gibi "&echo line2"nin yazdırılmasını engellemez; sadece olacak
"&echo line1"in yazdırılmasını engelle.

· Makepp aşağıdaki ortam değişkenlerini desteklemez (onları kurmaz,
ve sadece onları yok sayar):

BAŞARILAR
MFLA'lar

uyumsuzluklar in sipariş of ifade genişleme
· Makepp'de, tüm bağımlılıkların garanti altına alınmasından önce kural eylemleri genişletilir.
inşa edilmiştir. Bunun gibi kuralları değiştirerek bu sorunu çözebilirsiniz:

foo: çubuk
genfoo < $(kabuk kedi çubuğu)

: bu

foo: çubuk
genfoo < 'kedi çubuğu'

veya genişletme sırasında dosyayı yapacak olan bu:

foo: çubuk
genfoo < $(&cat $(çubuk yap))

Bu, burada tercih edilir, çünkü dosyada listelenen bar ayrıca bunun bir bağımlılığı
kuralı ve makepp artık yeniden yönlendirmeyi sözlüksel olarak analiz ederken onu yakalayabilir.

· Bunun kullanıldığını görmemiş olsam da, GNU make aşağıdakilere izin verir:

kolon = :
a$(iki nokta üst üste) b
yankı $^

Makepp, "$(kolon)" öğesini bunun çalışması için çok geç genişletiyor. Ancak sunduğu
GNU'nun yaptığından çok daha fazlasını yapabilen alternatif "$[kolon]" sözdizimi, çünkü
çok erken genişledi.

"$( YAPIN)" Mayıs ayı dahil alanlarda
Kaldırılmış bir makepp'te veya platform bir Perl betiği başlatmayı desteklemiyor gibi görünüyorsa
sihirli sayı ile veya "--traditional-recursive-make" ile bu değişken en azından
bir boşluk. Komut olarak kullanıldığında bu bir sorun değildir. Ama bir olarak geçerken
bir komut dosyasına alıntılanmamış parametre (Perl 5.14.0 derleme sisteminin yaptığı gibi), onu yırtacaktır
ayrı parametrelere ayırarak karışıklığa yol açar. Yani bir parametre olarak daha güvenlidir
'$(MAKE)' olarak alıntı yapın. geriye dönük uyumluluğu bozmaz.

hedefe özel ödevler değil mi yaymak
Makepp'in hedefe özel değişkenleri, GNU make'lerinden biraz farklıdır.
sadece bahsedilen tek dosya kuralı için geçerlidir ve öncekilerden herhangi biri için geçerli değildir; görmek
Hedefe özel atamalar.

Parantez or pantolon askısı değil mi yuva
Makepp, ifadeleri eşleşen ilk parantez veya ayraçla bitirir. Bunun yerine

$(bir işlev ... ( ) ...) # GNU stil yap

bunlardan birini kullanmalısın

${bir işlev ... ( ) ...} # GNU uyumlu hale getir
$((bir işlev ... ( ) ...)) # Makepp uzantısı

Bu muhtemelen 2.1 sürümünde düzeltilecektir, belki isteğe bağlı olarak.

Küçük noktaları
Desen bağımlılıkları sahte hedeflerle eşleşmiyor
%.a: %.b; ...
$(sahte xb): ; ... # xa oluşturmak için bir yol sağlamaz

Yorumlarda devam satırı yok
# Bu \
2 satırlık bir yorum DEĞİL

Komuta hat uyumsuzluklar


Makepp, make'nin daha kullanışlı komut satırı seçeneklerinden birkaçını destekler. Ancak aşağıdakiler,
desteklenmez:

-d veya --debug
-F -
Makepp'in dahili makefile nesneleri dosya nesnelerine bağlıdır, bu nedenle işleyemez
stdin.

-i
-l veya --load-average veya --max-load
-m Makepp'in "-m" seçeneği imza yöntemi seçimiyle ilgiliyken, GNU
-m'yi yok sayar.

-p veya --print-data-base
-q veya --soru
-R veya --no-yerleşik değişkenler
Makepp'in "-R" seçeneği aslında tamamen farklı bir şey yapıyor.

-S --devam yok veya --dur
"--stop" seçeneği, tüm kuralları öğrendikten sonra makepp'i durdurur (uyuturur)
düzenlemeye devam edebilir.

-t veya --touch
-w veya --print-dizini
Bu otomatik olarak gerçekleşir.

--warn-tanımsız-değişkenler

Biri umursadığında bunlardan bazıları kolayca desteklenebilir.

Değişken uyumsuzluklar


Makepp, "$(CC)" veya
"$(CXX)", GNU make ise statik varsayılanlara sahiptir. Ayrıca makepp "gcc"yi tercih eder ve
"g++" şaşırtıcı bir şekilde GNU, birincisi için "cc" döndürür, ancak aynı
ikincisi. Bunları makefile'de, komut satırında veya dışa aktararak geçersiz kılabilirsiniz.
makepp'i çağırmadan önce aynı adı taşıyan değişken.

onworks.net hizmetlerini kullanarak makepp_incompatibilities çevrimiçi kullanın


Ücretsiz Sunucular ve İş İstasyonları

Windows ve Linux uygulamalarını indirin

Linux komutları

Ad