GoGPT Best VPN GoSearch

Ulubiona usługa OnWorks

makepp_incompatibilities - Online w chmurze

Uruchom makepp_incompatibilities w darmowym dostawcy hostingu OnWorks na Ubuntu Online, Fedora Online, emulatorze online systemu Windows lub emulatorze online systemu MAC OS

To polecenie makepp_incompatibilities, które można uruchomić w darmowym dostawcy hostingu OnWorks, korzystając z jednej z wielu naszych darmowych stacji roboczych online, takich jak Ubuntu Online, Fedora Online, emulator online systemu Windows lub emulator online systemu MAC OS

PROGRAM:

IMIĘ


makepp_incompatibilities – niezgodności między makepp i GNU make

OPIS


Makepp został zaprojektowany tak, aby był jak najbardziej zbliżony do GNU make
(<http://www.gnu.org/software/make/manual/make.html>). Narzędzia automatyczne GNU
(<http://www.gnu.org/software/automake/manual/automake.html>), CMake
(<http://www.cmake.org/>), Premake (http://industriousone.com/premake> i zobacz uwagę
poniżej) lub ręcznie wykonane starsze systemy kompilacji powinny być możliwe do skompilowania za pomocą makepp. To jest tak
Możesz bez problemu migrować projekty. Albo, jeśli nie chcesz korzystać ze wszystkich możliwości,
zalety makepp (np. możliwość budowania Twojego projektu za pomocą GNU make przez innych) podczas gdy Ty
Skorzystaj z zalet niezawodności dla swojego rozwoju.

Jednakże ze względu na różnice w filozofii, niektóre z GNU make lub POSIX make
(<http://pubs.opengroup.org/onlinepubs/009695399/utilities/make.html>) funkcje nie mogą być
wspierane. Kilka nie zostało wdrożonych, bo nie mieliśmy czasu. Większość
Różnice w stosunku do GNU są dość techniczne i tylko rzadko powodują problemy. Niestety
rozwiązania obejścia niedociągnięć tradycyjnego tworzenia stają się coraz bardziej złożone,
i sprawiają makeppowi kłopoty.

Krótko mówiąc, jeśli nie uda Ci się tego zbudować od razu, spróbuj:

makepp --no-warn makepp_simple_concatenation=1 makepp_percent_subdirs=1 \
--build-check=target_newer --last-chance-rules --no-remake-makefiles

Jeśli to się powiedzie, możesz spróbować wyeliminować te argumenty jeden po drugim. Ale jeśli to się nie uda,
spróbuj dodać:

--traditional-recursive-make

Jeśli to również się nie powiedzie, system kompilacji wymaga pewnych modyfikacji, aby współpracował z makepp. Nawet
jeśli niektóre z opisanych tutaj opcji sprawiają, że coś jest możliwe do zbudowania, nadal zaleca się dostosowanie
rzeczy, dzięki czemu stają się kompatybilne od razu z urządzeniami obu marek.

Wymuszanie jeszcze POSIX or GNU robić zgodność


Oto kilka możliwości wiersza poleceń umożliwiających uruchomienie wielu starszych systemów kompilacji
bez modyfikacji. Sprawiają, że makepp dokładnie emuluje zachowanie GNU make.

zgodność przez dotychczasowy opcja: "--build-check=target_newer"
Domyślnie makepp będzie próbował przebudować wszystkie cele, jeśli którakolwiek z zależności ma
zmieniona od ostatniej kompilacji lub jeśli polecenie zostało zmienione (zobacz makepp_build_check, aby uzyskać więcej informacji).
(szczegóły). Zwykle tego chcesz. Czasami jednak nie chcesz, aby cel
należy przebudować, jeśli został zmodyfikowany poza kontrolą makepp (np. poprzez edycję)
lub uruchamiając program ręcznie, aby utworzyć plik). Możesz wymusić na makepp użycie
tradycyjny algorytm make, który przebudowuje tylko wtedy, gdy którykolwiek z celów jest nowszy niż
zależności, dodając tę ​​opcję do wiersza poleceń.

zgodność przez dotychczasowy opcja: "--dont-build=config.status"
Istnieją pakiety, które próbują się automatycznie konfigurować lub wykonywać inne czynności, które powodują
ignoruje, chyba że zostanie o to poproszony, np.:

config.status : skonfiguruj
./config.status --recheck

skonfiguruj: skonfiguruj.w aclocal.m4
autoconf

Większość ludzi nie ma nawet zainstalowanego „autoconf”, więc sumiennie robią wszystko
Reguły, tak jak robi to makepp, zawiodą. Ta opcja zapobiega temu, jeśli odkryjesz, co
nie budować.

zgodność przez dotychczasowy opcja: „--zasady-ostatniej-szansy”
Domyślne reguły (reguły wzorców bez zależności od wzorców) nie są zwykle obsługiwane.
Makepp tworzy wszystkie reguły na podstawie istniejących plików, dzięki czemu jest świadomy każdego
plik, który mógłby zostać wygenerowany. Niestety w ten sposób nie wie, jak utworzyć instancję wzorca
Reguła bez zależności od wzorca. Mechanizm :last_chance częściowo to rozwiązuje.
Jeśli taka opcja jest wystarczająca w przypadku starszych plików makefile, można ją włączyć globalnie.

zgodność przez dotychczasowy opcja: „--no-warn”
To nie poprawia wyniku. Makepp będzie wyświetlał komunikaty ostrzegawcze w przypadku wielu rzeczy.
które tradycyjna wersja Unixa akceptuje bez mrugnięcia okiem. Dzieje się tak, ponieważ istnieją
Lepsze sposoby na ich wykonanie w Makepp. Jeśli te ostrzeżenia Cię denerwują, możesz je wyłączyć.
z tą opcją.

zgodność przez dotychczasowy opcja: „--hybrid-recursive-make”
Rekurencyjne wywołania make są często uważane za niebezpieczną praktykę (patrz „Lepsze
„system dla hierarchicznych kompilacji” w makepp, aby uzyskać więcej szczegółów), ale są one niezwykle powszechne w
Istniejące pliki makefile. Makepp obsługuje rekurencyjne make dla zapewnienia wstecznej kompatybilności; dla nowych
w przypadku plików makefile znacznie lepiej jest użyć instrukcji „load_makefile” lub domyślnej instrukcji makepp
mechanizm ładowania pliku makefile.

Aby móc korzystać z repozytoriów w przypadku kompilacji wariantów i ułatwić tworzenie rekursywnych wersji,
wywołania make safer, makepp zwykle nie wywołuje siebie rekurencyjnie
nawet jeśli mu to powiesz. Zamiast tego podproces komunikuje się z procesem nadrzędnym i
właściwą kompilację wykonuje proces nadrzędny.

W większości przypadków to działa, ale nie można wywoływać kilku plików makefile z tego samego pliku.
katalog, np. poniższe nie będzie działać:

cel: zależności
$(MAKE) -f inne cele pliku makefile

W tym przypadku makepp zauważa, że ​​ładuje drugi plik makefile i zgłasza błąd. Z tą opcją
zamiast tego powróci do tradycyjnej metody budowania z dodatkowych plików makefile
każdy z nich ma osobny proces makepp.

Uwaga: technicznie rzecz biorąc, załadowanie kilku plików makefile nie stanowiłoby problemu, ale zwykle mają one
Te same fałszywe nazwy docelowe. Oddzielenie ich oznaczałoby całkowitą przebudowę makepp.
elementy wewnętrzne. To jednak zadziała, ale nie jest równoważne:

cel: zależności
cd subdir && $(MAKE) -f inne_cele pliku makefile

zgodność przez dotychczasowy opcja: „--traditional-recursive-make”
Czasami poprzednia opcja nie jest wystarczająca, szczególnie jeśli rekurencyjne wywołania używają
sprzeczne opcje. Makepp używa tylko jednego zestawu opcji globalnych, więc podmak nie jest
wolno ich modyfikować, ponieważ dotyczyłoby to również innych plików makefile.

Dodanie tej opcji do wiersza poleceń ma następujące niepożądane skutki uboczne:

· Rekurencyjne operacje make nie są wewnętrznie wykonywane równolegle, nawet jeśli wykonuje je funkcja nadrzędna.
W przeciwieństwie do gmake nie ma tu ogólnej koordynacji liczby procesów. To spowoduje
nie można wdrożyć, ponieważ ten sposób pracy nie jest celem projektowym makepp.

· Rekurencyjne procesy make nie wiedzą nic o repozytoriach.

· Każdy rekurencyjny proces make generuje własny plik dziennika w katalogu, w którym został wywołany
zamiast generować jeden plik dziennika dla całej kompilacji.

· Ponieważ makepp zwykle buduje więcej niż tradycyjny make uważa za konieczne, a ponieważ wiele
systemy kompilacji zapewniają wywołania rekurencyjne we wszystkich kierunkach, co może prowadzić do nieskończoności
rekursja. Makepp pociągnie za hamulec po 50 rundach i powie ci, jak zwiększyć
na wypadek gdybyś miał tak głębokie zagnieżdżenie.

Nawet przy opcji „--traditional-recursive-make” zmienne środowiskowe
„MAKEOVERRIDES” i „MFLAGS” nie są skonfigurowane i są ignorowane, więc pliki makefile, które są od nich zależne,
te nie będą działać.

A Przedsmak wygenerowane Makefile jest tylko zabawnym opakowaniem wywołania sub-make w tym samym
katalog. Jeśli masz jakiś cel projektu XYZ będzie miała linię taką jak

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

W tym przypadku możesz uniknąć opcji „--traditional-recursive-make”, wywołując ją bezpośrednio
makepp z tym "-f XYZ.make" opcja.

zgodność bez dotychczasowy opcja: "--jobs=n"
Starsze pliki makefile czasami nie zawierają listy wszystkich zależności, opierając się na kolejności
wykonanie, aby wykonać je na czas. W tej sytuacji makepp może wywołać regułę przed
Wszystkie jego zależności zostały już spełnione. Wtedy wyniki mogą być lepsze przy mniejszej ilości lub nawet bez niej.
wykonanie równoległe.

zgodność przez dotychczasowy zmienna: "makepp_simple_concatenation=1"
Podstawianie w stylu Rc jest domyślnym sposobem, w jaki makepp wykonuje podstawianie zmiennych w tekście
ciągi, ponieważ bardzo rzadko psują starsze pliki makefile i często są przydatne w nowych
makefiles. Wprowadza jednak sporadyczne niezgodności w zastępowaniu
zmienne nieobjęte spacjami. Na przykład,

INCLUDE_PREFIX := -I/some/include/dir -I
ZAWIERA := $(INCLUDE_PREFIX)/include/dir

ustawi "INCLUDES" na "-I/some/include/dir/other/include/dir -I/other/include/dir", jeśli rc-
podstawianie stylu jest włączone, podczas gdy GNU make ustawiłoby je na
„-I/some/include/dir -I/other/include/dir”. Np. podczas kompilacji Redis 2.6.5 próbuje
Uruchom „printfgcc”. Takie zabawne połączenie dwóch poleceń wyraźnie wskazuje, że
zmienna ta jest potrzebna, aby powrócić do semantyki.

Istnieje również niezgodność w obsłudze białych znaków w zmiennej:

brak :=
T := -o $(null) # T zawiera -o, po którym następuje jedna spacja.
PLIK WYJŚCIOWY = $(T)plik wyjściowy

ustawi „OUTFILE” na „-ooutfile”, jeśli włączona jest substytucja w stylu rc, podczas gdy GNU make
ustawiłoby to na "-o outfile".

Obie te niezgodności można usunąć, ustawiając „makepp_simple_concatenation”
zmienna. Należy jednak pamiętać, że nawet z „makepp_simple_concatenation” makepp nadal
w niektórych sytuacjach traktuje odstępy w sposób niekompatybilny:

T := -o # Nie usuwaj tego komentarza.

GNU make ustawia „T” tak, aby zawierało „-o” i spację, podczas gdy makepp usuwa
spację końcową. Jeśli chcesz spację końcową, musisz ją ustawić
„makepp_simple_concatenation” i ustawić „T” za pomocą techniki wykorzystującej fikcyjną wartość
zmienna taka jak „null”, jak pokazano powyżej.

Obejście opcja „--no-remake-makefiles”
Typowe oprogramowanie open source wymaga wywołania polecenia „configure” w celu utworzenia plików makefile. Ale potem te
Pliki makefile mogą zawierać reguły umożliwiające ponowne utworzenie pliku makefile poprzez wywołanie jakiegoś polecenia. Makepp
Z chęcią zastosuję się do zasad i zaktualizuję je zgodnie z nimi. Ale czasami jest to szkodliwe, więc
po prostu to pomiń.

zgodność przez dotychczasowy zmienna: "makepp_percent_subdirs=1"
Domyślnie „%” w regule wzorca nie pasuje do katalogów. Oznacza to, że reguła taka jak
to:

%.o: %.c
$(CC) $(CFLAGS) -c $(wejście) -o $(wyjście)

nie będzie stosowane do plików takich jak „../shared/xyz.c”. Jeśli chcesz, aby pasowało do plików w
podkatalogi również, a następnie ustaw zmienną „makepp_percent_subdirs=1” w wierszu poleceń
lub na początku pliku makefile.

zgodność przez dotychczasowy środowisko zmienna: $MAKEPP_IGNORE_OPTS
Czasami starsze wywołania rekurencyjne przekazują opcje, których makepp nie rozumie.
Mam nadzieję, że ta opcja nie jest istotna, ale uniemożliwia uruchomienie makepp.
Zmienna środowiskowa pozwala na poproszenie makepp o ciche ignorowanie niektórych opcji. Wartość
będzie listą opcji rozdzielonych spacjami, która może występować w 4 wariantach:

--długie=x
Długa opcja, która oczekuje argumentu. Fakt ten musi zostać zadeklarowany za pomocą operatora równości.
znak, choć faktyczne użycie może być również oddzielone spacją, na przykład „--long=bla” lub
"--długi bla".

--długie
Długa opcja bez argumentów.

-sx Krótka opcja oczekująca argumentu. Fakt ten należy zadeklarować, dodając
coś bezpośrednio po opcji, choć faktyczne użycie może być również oddzielone
spacja, albo "-sbla" albo "-s bla".

-s Krótka opcja bez argumentów.

Np. nadpisz opcję -R programu makepp o jeden bez argumentu i zaakceptuj debugowanie programu gmake
opcja z argumentem:

eksportuj MAKEPP_IGNORE_OPTS='-R --debug=x'

Niezgodności że wymagać Makefile zmiany


Pliki Makefile, które jawnie wywołują make, uniemożliwiają makepp samodzielne zbudowanie wszystkiego.
Niestety, własny „ExtUtils::MakeMaker” Perla zatwierdza drugą z dwóch następujących form
ten błąd do wersji 6.56 (Perl 5.12.1):

podkatalog:
cd subdir; make

MAKE = zrobić

Ustawienie zmiennej „VPATH” na jakąś wartość powoduje niejawne wywołanie „wartość vpath %”. „vpath”
Oświadczenia są emulowane za pomocą mechanizmu repozytorium. Zatem tam, gdzie gmake zastępuje
ścieżka do pliku znajduje się w ścieżce vpath, makepp zamiast tego połączy ją symbolicznie
tam, gdzie jest to potrzebne. W ten sposób makepp dostarczy niezmodyfikowany ciąg, który zwykle jest
nie ma problemu.

Cele w ścieżce vpath nie są obsługiwane. (Gmake bierze je pod uwagę, jeśli są nowsze niż
ich zależności, ale jeśli nie, cel zostanie utworzony ponownie w bieżącym katalogu
-- raczej niespójne.) Zmiana ustawień vpaths nie jest obsługiwana.

· Reguła wzorca znajdująca się później w pliku makefile zastępuje regułę znajdującą się wcześniej.
To jest odwrotność GNU make.

· Zestaw wbudowanych, niejawnych reguł nieco różni się od tych dla GNU make,
chociaż nazwy zmiennych są w dużej mierze kompatybilne. Wbudowane reguły powinny
pomyślnie skompilować programy w językach C/C++/Fortran i w rzeczywistości może być w stanie odgadnąć
W niektórych przypadkach również odpowiednie biblioteki. Obsługa Modula-2 i RatFor oraz innych rzadkich
języki celowo nie są obecne, ponieważ ciągle napotykałem problemy z GNU
make, gdy przypadkowo ponownie wykorzystałem rozszerzenia dla tych języków.

· Prefiks akcji „+” jest bezgłośnie ignorowany.

· Członkowie archiwum nie są obsługiwani, podobnie jak powiązane zmienne automatyczne
$%, "$(%D)" i "$(%F)".

· Brak wsparcia SCCS.

· Spacje na początku i na końcu przy przypisywaniu zmiennych są ignorowane (nawet jeśli
Po odstępie następuje komentarz). Aby uzyskać więcej szczegółów na temat obsługi odstępów,
niezgodności, patrz „Odstępy w zmiennych” w makepp_variables.

· Makepp nie próbuje odbudować plików dołączonych poleceniem „include”, chyba że
plik makefile zawiera regułę ich budowania przed wyświetleniem polecenia include.
(Jednakże spróbuje odbudować sam plik makefile.) Zwykle używa się tego do
obsługa uwzględnia zależności plików i nie jest tak użyteczna w przypadku makepp, ponieważ nie
Tak czy inaczej muszę to zrobić.

· Zmienna „SHELL” jest obecnie częściowo ignorowana. Makepp zawsze używa / Bin / sh
chyba że /usr/xpg4/bin/sh or /sbin/xpg4/sh zostanie znaleziony lub chyba że wyeksportujesz "SHELL"
zmienną w pliku makefile. Jeśli jednak to zrobisz, parser poleceń może nie być w pełni
Zrozum, co robi Twoje polecenie powłoki. W systemie Windows Strawberry lub ActiveState Perl
zamiast tego musisz ustawić swoją zmienną SHELL zanim Dzwonię do makepp.

· Zależności od czegokolwiek w pliku Makefile nadal działają, ale zwykle są zbędne.
Zwykle służy to do wymuszenia przebudowy po zmianie opcji kompilacji. Makepp wie
gdy polecenia kompilacji zostały zmienione bez niczego specjalnego w pliku makefile; przechowuje
to na podstawie każdego pliku. Jeśli zmienisz plik makefile, będzie on dokładnie wiedział, który
pliki wymagają ponownej kompilacji.

· Pliki pośrednie nie są usuwane. (Ponieważ makepp wymaga usunięcia wszystkich plików)
daty muszą być takie same jak w ostatniej kompilacji, wszystkie pliki pośrednie muszą być
(obecne, w przeciwnym razie nastąpią przebudowy.) Nie przysługuje im żaden specjalny status
pliki pośrednie.

· Jedynym obsługiwanym celem specjalnym jest „.PHONY” i częściowo „.SUFFIXES”.
pozostałe są po prostu ignorowane.

Konkretnie rzecz biorąc, GNU make ma następujące cele specjalne:

.SUFIKSY
Makepp ignoruje „.SUFFIXES” z wyjątkiem szczególnego przypadku „.SUFFIXES” bez
zależności, takie jak to:

.SUFIKSY:

która informuje, aby nie ładować żadnej ze swoich domyślnych reguł.

.ŚREDNIOZAAWANSOWANY, .ŚREDNIOZAAWANSOWANY, .CENNY
Plikom pośrednim nie przyznaje się specjalnego statusu, dlatego też te cele nie są
znaczący.

.IGNOROWAĆ
Ten cel jest ignorowany. Jeśli chcesz ignorować błędy, wpisz słowo „ignore_error”.
(lub znak minus) przed poleceniem, którego status wyjścia ma zostać zignorowany.

.CICHY
Ten cel jest ignorowany. Jeśli chcesz, aby polecenia nie wyświetlały się echem, wpisz słowo „noecho”.
(lub znak „@”) przed poleceniem, którego nie należy powtarzać,
lub użyj opcji "--silent" w makepp.

.DELETE_ON_ERROR
.EXPORT_ALL_VARIABLES
.NOEXPORT
.POSIX
.DOMYŚLNY
Te cele nie są obsługiwane i są po prostu ignorowane.

· Funkcje GNU make „eval”, „flavor” i „value” nie są obecnie obsługiwane.
może osiągnąć to samo co eval w bardziej bezpośredni sposób za pomocą "$[...]"
rozwinięcie zmiennej lub funkcji.

· Reguły podwójnego dwukropka nie są w pełni obsługiwane. (Nie mogą być: w paradygmacie makepp,
(nie może być więcej niż jeden sposób aktualizacji celu.) Obecnie każda kolejna
reguła podwójnego dwukropka dla danego celu po prostu dodaje jego ciąg poleceń i zależność
do ciągu poleceń i listy zależności dla tego celu. Na przykład, jeśli
napisz to:

a :: b
&cat b -oa

# Później w pliku makefile:
a :: c
&cat c -o >>a

to jest dokładnie tak samo jakbyś napisał

a : p.n.e.
&cat b -oa
&cat c -o >>a

Z pewnością nie do tego służą zasady dotyczące podwójnego dwukropka i nie zawsze tak będzie.
działa, ale działa w przypadku celów takich jak „czysty” lub wszystkich rzeczy, które
ExtUtils::MakeMaker umieszcza w swoich plikach makefiles. Nie licz na to, że będzie działać w jakikolwiek inny sposób.
niż starsze pliki makefile.

· Funkcja „$(wildcard)” dopasowuje nie tylko pliki istniejące, ale także pliki, które
jeszcze nie istnieją, ale mają regułę, którą makepp dostrzegł w momencie
Obliczana jest funkcja "$(wildcard )".

· Obsługiwane jest polecenie „define”, ale obsługa znaku „@” poprzedzającego je jest wykonywana
Inaczej. Obecnie w makepp znak „@” przed zmienną, która ma wiele wierszy
Wartość ta spowoduje jedynie wyłączenie echa pierwszego wiersza. Na przykład,

zdefiniuj linie echa
&echo line1 -o $@
&echo line2 -o>>$@
koniec

x:
@$(linie echa)

nie będzie blokować drukowania „&echo line2” jak ma to miejsce w GNU make; będzie to miało miejsce tylko
wyłącz drukowanie "&echo line1".

· Makepp nie obsługuje następujących zmiennych środowiskowych (nie konfiguruje ich,
i po prostu je ignoruje):

PRZERÓBKI
MFLAGI

Niezgodności in zamówienie of wyrażenie ekspansja
· W makepp akcje reguł są rozwijane przed zagwarantowaniem wszystkich zależności
zostały zbudowane. Możesz to obejść, zmieniając zasady w następujący sposób:

foo: bar
genfoo < $(shell cat bar)

do tego:

foo: bar
genfoo < `cat bar`

lub tego, co spowoduje utworzenie pliku podczas rozszerzania:

foo: bar
genfoo < $(&cat $(make bar))

Jest to tutaj preferowane, ponieważ plik wymieniony w bar jest również zależnością od tego
regułę, a makepp może ją teraz wychwycić podczas analizy leksykalnej przekierowania.

· Choć nie widziałem, żeby to było używane, GNU make pozwala na następujące rzeczy:

dwukropek = :
a$(dwukropek) b
echo $^

Makepp rozwija „$(dwukropek)” zbyt późno, aby to zadziałało. Oferuje jednak
alternatywna składnia „$[dwukropek]”, która może zrobić o wiele więcej niż GNU make, ponieważ jest
rozszerzony bardzo wcześnie.

"$(ZRÓB)" może zawierać obowiązuje
W odinstalowanym makeppie lub jeśli platforma nie obsługuje uruchamiania skryptu Perla
za pomocą magicznej liczby lub za pomocą „--traditional-recursive-make” ta zmienna będzie zawierać co najmniej
jedna spacja. Nie stanowi to problemu, gdy używamy go jako polecenia. Ale gdy przekazujemy go jako
nieumieszczonego w cudzysłowie parametru do skryptu (jak to robi system kompilacji Perl 5.14.0), spowoduje to jego rozerwanie
rozdzielić na osobne parametry, co prowadzi do zamieszania. Dlatego bezpieczniej jest, jeśli parametr jest
zacytuj to jako '$(MAKE)', co nie narusza wstecznej kompatybilności.

Celowo-specyficzny Zadania nie propagować
Zmienne specyficzne dla celu programu Makepp różnią się nieznacznie od zmiennych programu GNU make, ponieważ
stosuje się wyłącznie do reguły dotyczącej jednego wymienionego pliku, a nie do żadnego z jego poprzedników; patrz
Zadania ukierunkowane na konkretny cel.

Zdanie wtrącone or szelki nie gniazdo
Makepp kończy wyrażenia na pierwszym pasującym nawiasie lub klamrze. Zamiast tego

$(somefunction ... ( ) ...) # styl GNU make

musisz użyć któregokolwiek z tych

${somefunction ... ( ) ...} # GNU make compatible
$((somefunction ... ( ) ...)) # rozszerzenie Makepp

Prawdopodobnie zostanie to naprawione w wersji 2.1, być może opcjonalnie.

Moll zwrotnica
Zależności wzorców nie pasują do fałszywych celów
%.a: %.b; ...
$(phony xb): ; ... # nie zapewnia sposobu na zbudowanie xa

Komentarze nie mają linii kontynuacji
# To jest \
NIE jest to komentarz dwuwierszowy

Command linia niezgodności


Makepp obsługuje kilka bardziej przydatnych opcji wiersza poleceń make. Poniżej jednak:
nie są obsługiwane:

-d lub --debug
-F -
Wewnętrzne obiekty Makefile programu Makepp są powiązane z obiektami plików, więc nie może ich obsłużyć
std.

-i
-l lub --load-average lub --max-load
Opcja „-m” programu Makepp ma związek z wyborem metody podpisu, podczas gdy w programie GNU make
ignoruje -m.

-p lub --print-data-base
-q lub --question
-R lub --no-builtin-variables
Opcja „-R” programu Makepp w rzeczywistości robi coś zupełnie innego.

-S --no-keep-going lub --stop
Opcja „--stop” zatrzymuje (uśpi) makepp po nauczeniu się wszystkich reguł, więc
możesz kontynuować edycję.

-t lub --touch
-w lub --print-directory
Dzieje się to automatycznie.

--ostrzegaj-niezdefiniowane-zmienne

Niektóre z nich można łatwo utrzymać, jeśli ktoś się tym interesuje.

Zmienna niezgodności


Makepp szuka w $PATH pasującego polecenia, które ma zostać zwrócone dla zmiennych takich jak „$(CC)” lub
„$(CXX)”, podczas gdy GNU make ma statyczne ustawienia domyślne. Ponadto makepp preferuje „gcc” i
„g++” co zaskakujące, GNU make zwraca „cc” w przypadku pierwszego, ale to samo w przypadku
ostatnie. Możesz je zastąpić w pliku makefile, w wierszu poleceń lub eksportując
zmienna o tej samej nazwie przed wywołaniem makepp.

Użyj makepp_incompatibilities online, korzystając z usług onworks.net


Darmowe serwery i stacje robocze

Pobierz aplikacje Windows i Linux

Komendy systemu Linux

Ad




×
reklama
❤️Zrób zakupy, zarezerwuj lub kup tutaj — bezpłatnie, co pomaga utrzymać bezpłatne usługi.