GoGPT Best VPN GoSearch

Ulubiona usługa OnWorks

makepp_command – Online w chmurze

Uruchom makepp_command w darmowym dostawcy hostingu OnWorks za pośrednictwem Ubuntu Online, Fedora Online, emulatora online systemu Windows lub emulatora online systemu MAC OS

To jest polecenie makepp_command, 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 — Składnia wiersza poleceń dla makepp

OPIS


?: -?, A: -DO,
--args-plik,
--argumenty-plik,
--załóż-nowy,
--załóż-stary, B: -B,
--build-cache,
--build-check,
--metoda-sprawdzania-budowy, C: -DO,
-C, D: --defer-include,
--informator,
--do-buduj,
--nie buduj,
--nie czytaj,
--czy-czytaj,
--próba,
--dump-makefile,
--dump-makeppfile, E: -mi,
--environment-overrides,
--env-overrides, F: -F,
-F,
--plik,
--tylko-zasady-ostateczne,
--force-copy-from-bc,
--force-rescan, G: --łatwowierny, H: -H,
--Wsparcie,
--hybrydowy,
--rekursja hybrydowa,
--hybrydowo-rekurencyjny-make, I: -i,
--implicit-load-makeppfile-only,
--włączać,
--include-dir,
--w piaskownicy,
--wewnątrz-piaskownicy, J: -J,
--praca,
--po prostu wydrukuj, K: -k,
--kontynuować, L: --zasady-ostatniej-szansy,
--load-makefile,
--load-makeppfile,
--dziennik,
--plik dziennika,
--pętla, M: -M,
--makefile,
$MAKEFLAGS,
$MAKEPP_CASE_SENSITIVE_FILENAMES,
--makeppfile,
$MAKEPPFLAGS,
--md5-bc,
--md5-sprawdź-bc, N: -N,
--nowy-plik,
--brak-wbudowanych-zasad,
--no-cache-scaninfos,
--no-implicit-load,
--brak logu,
--no-path-executable-dependencies,
--no-path-exe-dep,
--no-populate-bc,
--no-print-katalog,
--no-remake-makefiles,
--nie-ostrzegaj, O: -o,
--stary-plik,
--poza piaskownicą,
--override-signature,
--override-signature-method, P: --populate-bc-only,
--profil, Q: --cichy, R: -R,
-R,
--zwiad,
--remove-stale,
--remove-stale-files,
--magazyn,
--rm-stale,
--katalog główny,
--katalog główny, S: -tak,
--piaskownica,
--sandbox-ostrzegaj,
---ostrzeżenie w piaskownicy,
--podpis,
--metoda-podpisu,
--cichy,
--zatrzymywać się,
--stop-after-loading,
--zatrzymaj się przed budowaniem,
--przystanek-na-wyścigu,
--zatrzymaj wyścig,
--symlink-in-rep-as-file,
--symlink-in-repository-as-file, T: --tradycyjny,
--tradycyjna rekurencja,
--tradycyjne-rekurencyjne-make, V: -V,
-v,
--gadatliwy,
--wersja,
--wirtualna-piaskownica, W: -W,
--co jeśli

makijaż [ opcja ... ] [ WAR=wartość ] [ cel ...]

MPP [ opcja ... ] [ WAR=wartość ] [ cel ...]

Makepp obsługuje większość opcji wiersza poleceń i składni obsługiwanych przez inne make.
myślniki między wyrazami są zawsze opcjonalne i można je zastąpić podkreśleniem.
W wierszu poleceń określasz listę celów do zbudowania. Jeśli nie określisz żadnych
cele, budowany jest pierwszy jawny cel w pliku makefile.

Możesz przypisać zmienne w wierszu poleceń, co zastąpi każde przypisanie lub
zmienna środowiskowa w każdym załadowanym pliku Makefile, np.

makepp CFLAGI=-O2

Prawidłowe opcje to większość standardowych opcji, plus kilka nowych:

-A filename
--args-plik=filename
--argumenty-plik=filename
Przeczytaj plik i przeanalizuj go jako prawdopodobnie ujęty w cudzysłów i/lub oddzielony znakiem nowej linii
opcje.

-b katalog
--build-cache=katalog
Określa ścieżkę do pamięci podręcznej kompilacji. Szczegóły znajdziesz w makepp_build_cache.
pamięć podręczna musi już istnieć; zobacz „Jak zarządzać pamięcią podręczną kompilacji” w makepp_build_cache dla
Jak to zrobić w pierwszej kolejności. Zdefiniowane w wierszu poleceń pamięci podręczne mogą być
nadpisane przez instrukcję build_cache w pliku makefile lub modyfikator reguły :build_cache.
Jeśli pracujesz z kilkoma różnymi kompilacjami, przydatne może być ustawienie środowiska
zmienna „MAKEPPFLAGS” będzie zawierać „--buil” „d-cache=/ścieżka/do/build/cache”, aby wszystkie
z Twoich kompilacji będzie domyślnie korzystać z pamięci podręcznej kompilacji.

--build-check=metoda
--build-check-method=metoda
Nazwa metody sprawdzania kompilacji, która służy do podjęcia decyzji, czy pliki muszą zostać odbudowane.
Możliwe wartości to „target_newer”, „exact_match”. Zobacz makepp_build_check
informacje o metodach kontroli kompilacji.

-C katalog
--katalog=katalog
Przejdź do podanego katalogu przed załadowaniem pliku makefile i próbą zbudowania obiektów docelowych.
Jest to podobne do określenia katalogu za pomocą „-F”, z tą różnicą, że późniejszy „-C”,
Opcje „-f”, „-F”, „-I” i „-R” są interpretowane w odniesieniu do nowego katalogu,
raczej niż stary.

-c
-- katalog główny
--katalog główny
Przejdź do katalogu zawierającego plik RootMakepp.

--defer-include
Obejście problemu polegającego na umieszczeniu instrukcji include przed regułą, która tworzy plik include. To
Dzieje się tak, ponieważ instrukcje include są umieszczane na końcu pliku makefile. W ten sposób
polecenie include jest wykonalne, ale nadpisywanie zmiennych lub modyfikacje mogą nadal
nie powiedzie się, w takim przypadku należy ustawić problematyczne wartości w wierszu poleceń (podczas gdy
gmake ignoruje wszelkie ustawienia zmiennych z pliku dołączonego, które mogą mieć wpływ na sposób, w jaki to jest
(plik sam w sobie zostanie zbudowany).

--dont-build=filename
--do-build=filename
Nie buduj określonego pliku lub, jeśli jest to katalog, wszystkiego, co się w nim znajduje, nawet
chociaż makepp uważa, że powinien -- lub powinien zbudować, nadpisując przeciwną specyfikację
z wyższego katalogu. Jest to przydatne, jeśli ręcznie utworzyłeś konkretny plik, używając
różne opcje kompilacji. Bez tej opcji, jeśli skompilujesz moduł ręcznie,
a następnie uruchom makepp, aby skompilować resztę programu, makepp również ponownie skompiluje
moduł, który skompilowałeś ręcznie, ponieważ makepp nie może zagwarantować, że kompilacja jest poprawna
jeśli którykolwiek z plików nie został utworzony pod jego kontrolą. Za pomocą tej opcji informujesz
makepp, że naprawdę wiesz, co robisz w przypadku tego konkretnego pliku i
obiecujesz, że nie musisz tego odbudowywać.

Na przykład,

% cc -g -DSPECIAL_DEBUG -c xc -o xo # Specjalna kompilacja wykonywana ręcznie
% makepp
cc -g -O2 -c xc -o xo # Makepp właśnie nadpisał Twoją kompilację!
cc xo yo -o my_program # Ponowne linki.
% cc -g -DSPECIAL_DEBUG -c xc -o xo # Zrób to jeszcze raz.
% makepp --dont-build xo # Powiedz makepp, aby nie przebudowywał xo, nawet jeśli chce to zrobić.
cc xo yo -o my_program # Teraz łączy się ponownie bez ponownej kompilacji.

Jeśli chcesz specjalnych opcji kompilacji tylko dla jednego modułu, często łatwiej jest edytować
makefile niż kompilacja ręczna jak w tym przykładzie; zobacz „Specyficzne dla celu”
„przypisania” w makepp_variables, aby ułatwić sobie wykonanie tego zadania.

Jeśli umieścisz RootMakeppfile (.mk) w katalogu źródłowym systemu kompilacji, tym katalogu i
wszystko pod nim domyślnie ma wartość „--do-build”, podczas gdy główny katalog pliku
Domyślnie system ustawia opcję „--dont-build”. W ten sposób wszystko w systemie kompilacji jest
zbudowany (jeśli to konieczne), ale nic nie jest robione na zewnątrz. Jeśli w tym scenariuszu chcesz
części zewnętrzne, które zawsze należy budować w razie potrzeby, należy wyraźnie je wybrać
Instrukcje „load_makefile” w jednym z plików makefile w drzewie.

Możesz mieć jeden RootMakeppfile (.mk) każdy w oddzielnych drzewach kompilacji i będą
załadowane, jeśli jedno drzewo ma zależności w innym. Ale nie wolno ci mieć
RootMakeppfile (.mk) w zagnieżdżonych katalogach, unikając dziwnych efektów, które często się pojawiają
gdy przypadkowo ponownie wywołasz „makepp --repository” w podkatalogu. Te
efekty obejmują duplikowanie reguł poprzez duplikowanie źródeł lub wieczną pamięć podręczną kompilacji
ponowne importy, ponieważ pliki w pamięci podręcznej mają właściwe podpisy, ale niewłaściwe względne
pates.

Zastąp opcję „--dont-build” dla określonego pliku lub katalogu. Jeśli masz
RootMakeppfile (.mk) u podstaw twojego systemu kompilacji, ale chcesz, aby makepp zbudował
coś poza systemem kompilacji, chociaż raz, musisz to wyraźnie oznaczyć jako
„--do-build”. Jeśli określisz „--do-build” dla pliku lub katalogu w
RootMakeppfile (.mk), bez "--dont-build" dla wyższego katalogu, wówczas katalog główny (i
wszystko inne pod tą opcją) w systemie kompilacji ma domyślnie ustawioną opcję „--dont-build”.

Aby rozwiązać konflikty między opcjami „--dont-build” i „--do-build”, wybierz tę, która ma najwięcej
konkretna ścieżka ma pierwszeństwo niezależnie od kolejności. Jeśli określono tę samą ścieżkę
jeśli zarówno „--dont-build”, jak i „--do-build”, wygrywa ta najbardziej na prawo.

Opcje „--dont-build” i „--do-build” mogą być niebezpieczne, jeśli podasz nieprawidłowe wartości
wskazówki dla makepp, ponieważ prosisz makepp, aby nie przeprowadzał niezbędnych sprawdzeń, aby zagwarantować
poprawna kompilacja. Ponieważ jednak pozwalają one znacznie zmniejszyć liczbę sprawdzeń, mogą
znacznie przyspiesz swoje kompilacje, jak wyjaśniono w potencjalnie niebezpiecznych metodach przyspieszania.

--nie-czytaj=filename
--do-read=filename
Nie czytaj wskazanego pliku lub, jeśli jest to katalog, wszystkiego, co się w nim znajduje – lub
do read, nadpisując przeciwną specyfikację z wyższego katalogu. Wygeneruj
Błąd zamiast odczytu plików oznaczonych jako „--dont-read”. Zobacz „--sandbox”. System plików
root domyślnie zawsze jest ustawiony na możliwość odczytu.

--dump-makefile=filename
--dump-makeppfile=filename
Zrzuć surową zawartość pliku makefile dla bieżącego katalogu (zgodnie z ustaleniami
pozycja tej opcji względem wszelkich opcji „-C”) filename. Dołącz pliki
są interpolowane, komentarze są usuwane, a "ifdef" są rozwiązywane. "# linia
Znaczniki „pliku” są wstawiane w razie potrzeby. Ostateczna wartość dowolnego elementu niereferencyjnego
Skalary w pakiecie pliku Makefile są drukowane po pliku Makefile.

Jest to przydatne podczas debugowania, ale (obecnie) niekoniecznie będziesz mógł z tego skorzystać
plik dump jako równoważny plik makefile, na przykład dlatego, że zawiera zarówno plik include
oświadczenie i plik interpolowany.

-e
--env-overrides
--nadpisania-środowiska
Powoduje, że zmienne ze środowiska zastępują definicje w pliku makefile.
domyślnie przypisania w pliku makefile zastępują wartości zmiennych, które są importowane
ze środowiska.

-F Plik Makepp
--makeppfile=Plik Makepp
Ładuje określony plik Makefile lub, jeśli określono katalog, Makefile w nim,
zamiast tego w bieżącym katalogu – dowolnego celu określonego po prawej stronie
Ta opcja jest interpretowana w odniesieniu do katalogu zawierającego plik Makefile.
szczegóły dotyczące sprawy katalogowej i Plik rootMakepp zobacz wyjaśnienie na następnej stronie
opcja.

Ta opcja może być przydatna, jeśli uruchamiasz makepp z nieprzewidywalnych katalogów.
na przykład, jeśli kompilujesz z poziomu emacsa i masz rozproszone źródła w całym swoim
drzewo katalogów, bieżącym katalogiem roboczym dla polecenia kompilacji będzie
katalog, w którym znajdował się ostatni edytowany przez Ciebie plik źródłowy, który może być lub nie być najwyższym
katalog poziomu dla Twojej kompilacji. Możesz jednak określić swoją kompilację
komenda jako

makepp -F /twój/źródło/katalog/góra

i będzie to działać bez względu na to, gdzie aktualnie się znajdujesz.

Ponieważ ta opcja nie ma wpływu na katalog, względem którego zostanie użyty kolejny „-C”,
Jeśli określono opcje „-f”, „-F”, „-I” i „-R”, można określić cele względne
bieżący katalog w ten sposób:

makepp -F /foo/bar -C . mytarget

-f Makefile
--plik=Makefile
--makefile=Makefile
Ładuje określony plik Makefile lub, jeśli określono katalog, Makefile w nim,
zamiast tego w bieżącym katalogu. Jeśli nie określisz opcji „-f” lub
opcja „-F” powoduje, że makepp najpierw szuka pliku w bieżącym katalogu (lub
katalog określony przez opcję „-C” najbardziej na prawo, jeśli taka istnieje) wywołany, wtedy
Plik RootMakepp.mk, Plik Makepp, następnie Makeppfile.mk, następnie makefile, następnie Makefile.
Można określić wiele opcji „-F” i „-f”.

Pierwsze dwa (Plik rootMakepp) są specjalne (niezależnie od tego, czy są podane wprost, czy znalezione)
(domyślnie). W dowolnym drzewie kompilacji musi znajdować się co najwyżej jeden z tych dwóch elementów.
makepp ma działać. Może ich jednak być kilka, jeśli zbudujesz kilka rozłącznych drzew w
za jednym zamachem. Te dwie rzeczy są poszukiwane nie tylko w wyżej wymienionym katalogu, ale także
stamtąd w górę. Jeśli zostanie znaleziony, zostanie załadowany przed wszystkimi innymi.

--tylko-zasady-finalne
Zignoruj zależności i niejawne cele reguły, chyba że cel jest fałszywy.

--force-copy-from-bc
Podczas korzystania z pamięci podręcznej kompilacji zawsze kopiuj pliki do i z pamięci podręcznej, nawet jeśli plik źródłowy
i cel znajdują się w tym samym systemie plików. Jest to przydatne głównie do testowania (emulacji)
w przypadku gdy tak nie jest.

--force-rescan
Nie należy korzystać z wyników skanowania z pamięci podręcznej z poprzednich uruchomień.

--łatwowierny
Wierzę, że zasady tworzą to, co deklarują, zamiast to sprawdzać. To jest
szybciej, ale nie wyłapuje błędów w regułach.

-?
-h
--help
Wydrukuj krótkie podsumowanie dostępnych opcji.

--hybrydowy
--rekursja hybrydowa
--hybrydowo-rekurencyjny-make
Ta opcja jest dostępna, aby umożliwić programowi makepp pracę ze starymi plikami makefile, które używają rekurencji
make ekstensywnie, szczególnie mnożąc w tym samym katalogu. Domyślnie rekurencyjne make
jest realizowany przez podproces komunikujący się z procesem nadrzędnym; kompilacja jest
faktycznie wykonywane przez proces nadrzędny. Pozwala to na korzystanie z niektórych przydatnych funkcji Makepp, takich jak
repozytoriów do pracy z rekurencyjnymi wywołaniami make. Jednak ta technika
nie zadziała, jeśli załadujesz więcej niż jeden plik makefile z tego samego katalogu. W takim przypadku
Ta opcja oznacza powrót do uruchomienia innej, niezależnej instancji makepp. Jeśli
jeśli to się nie powiedzie, spróbuj „--traditional-recurive-make”.

Jeśli skorzystasz z tej opcji, otrzymasz pliki dziennika w każdym katalogu zapasowym
wystąpiło. Aby się ich pozbyć, użyj „makeppclean --logs --recurse” lub „mppc
-lr".

-I katalog
--włącz=katalog
--include-dir=katalog
Przeszukaj podany katalog w celu znalezienia dołączonych plików makefile.

--implicit-load-makeppfile-only
Jeżeli włączone jest domyślne ładowanie plików makefile, wówczas automatycznie ładowany jest tylko plik
o nazwie Plik rootMakepp, Plik RootMakepp.mk, Plik Makepplub Makeppfile.mk, nie
makefile or Makefile. Jest to przydatne, jeśli makepp ma zależności generowane przez
jakiegoś innego wydania make, a makepp generalnie nie potrafi odczytać plików makefile tego wydania.
(Chcesz uniknąć tej sytuacji, jeśli to możliwe, ale ma ona tendencję do pojawiania się, gdy jesteś w
(proces przenoszenia starszego systemu kompilacji do makepp.) Nie ma to żadnego wpływu, jeśli
ładowanie niejawne jest wyłączone.

-j n
--praca=n
Interpretuje argument n jako liczba poleceń powłoki, które można wykonać w
równolegle. Domyślnie makepp nie wykonuje poleceń równolegle.

W przeciwieństwie do niektórych innych wersji make, gdy zadania są wykonywane równolegle, makepp kieruje
zapisują dane wyjściowe do pliku i wyświetlają je dopiero po zakończeniu wykonywania poleceń.
Zapobiega to mieszaniu się wyników kilku różnych poleceń na raz.
wyświetlacz, ale oznacza to, że może trzeba będzie poczekać trochę dłużej, aby zobaczyć
wyjście i wiadomości stderr zwykle pojawiają się przed elementami stdout, w odróżnieniu od
wyjście terminala.

Natywne dla systemu Windows języki Perls (np. Strawberry i ActiveState), ponieważ nie obsługują
W paradygmacie fork/exec systemu Unix nie należy zezwalać na tę opcję (Cygwin działa dobrze!).
częściowa wymiana, możesz użyć tam opcji --sandbox, choć jest to znacznie mniej
wygodne.

-k
--kontynuować
Twórz jak najwięcej plików w bezpieczny sposób, nawet jeśli niektóre polecenia zawierają błędy.
domyślnie makepp zatrzymuje się po napotkaniu pierwszego błędu, nawet jeśli występują inne
pliki, które muszą zostać utworzone i nie zależą od błędnego pliku.

--zasady-ostatniej-szansy
Aktywuj ograniczoną specjalną obsługę reguł wzorców z '%' tylko po stronie docelowej.
Jest to konieczne, ponieważ w przeciwieństwie do tradycyjnych make, makepp tworzy wszystkie instancje
reguły ze wszystkimi dostępnymi plikami od dołu do góry, co pozwala na znalezienie wszystkich możliwych do utworzenia
zależności.

--load-makefile=Makefile
--load-makeppfile=Makefile
Ładuje określony plik makefile zanim jakiekolwiek inne pliki makefile, z wyjątkiem Plik rootMakepplub
Plik RootMakepp.mk powyżej, ale nie bierz tej opcji pod uwagę
Określanie domyślnego celu. Jeśli nie określono innego pliku makefile, poszukiwany jest jeden.
stosując standardowe zasady. Jeśli określony plik Makefile jest tym samym plikiem Makefile, który został znaleziony
jeśli zastosujesz zwykłe zasady, to ta opcja nie będzie miała żadnego efektu.

--log=nazwa pliku dziennika
--plik-log=nazwa pliku dziennika
Zmienia nazwę pliku dziennika na wskazaną nazwę. Domyślnie plik dziennika to
o nazwie .makepp/log. Ten plik można odczytać za pomocą makepplog, mppl.

--pętla
--zatrzymać
--stop-przed-budowaniem
--stop-after-loading
Makepp będzie wielokrotnie zatrzymywać się (przechodzić w tryb uśpienia), zanim przeanalizuje i zbuduje
cokolwiek, żebyś mógł go obudzić, kiedy będziesz gotowy. Powie ci kilka komend,
Wybierz opcję ponownego wybudzenia. Jeśli zrobisz to w powłoce, pojawi się monit i
można go następnie przesunąć do przodu lub do tyłu. Jeśli zrobisz to w środowisku IDE, po prostu przejdzie w tryb uśpienia i
Możesz go obudzić z innej powłoki. W zależności od tego, gdzie go uruchomisz, zamknięcie tej powłoki
okno może zakończyć działanie makepp lub nie, więc sprawdź, jak sobie z tym poradzić w swoim
środowisko.

Celem jest umożliwienie uruchomienia makepp w ten sposób przed zakończeniem edycji
niektóre pliki. W zależności od struktury i rozmiaru projektu, może to pozwolić makepp na
zdobądź przewagę w postaci wielu sekund pracy, zanim skończysz. Potem każdy
czas możesz edytować więcej i ponownie go obudzić, chyba że zmienisz coś w swoim
Makefile, który pozostanie niezauważony, dopóki nie uruchomisz nowej instancji makepp. To samo
dotyczy repozytoriów, których nie wolno zmieniać podczas działania makepp.

Jeśli użyjesz „prebuild” lub „$(make)”, w pierwszej rundzie zatrzyma się, gdy dojdzie do
ten punkt.

-m metoda
--podpis=metoda
--metoda-podpisu=metoda
Określa domyślną metodę podpisu, która ma być używana w przypadku reguł, które nie mają
Modyfikator „:signature” w plikach makefile, które nie zawierają instrukcji „signature”. Czy
Nie nadpisywać wyboru dokonanego przez parsery poleceń, np. kompilatory C/C++. Możliwe
Wartości to „md5”, „C” lub „c_compilation_md5”, „xml” i „xml-space”. Więcej informacji
szczegóły znajdziesz w makepp_signatures.

--md5-bc
--md5-sprawdź-bc
Podczas importowania z pamięci podręcznej kompilacji odrzucaj cele z pamięci podręcznej, chyba że występuje suma MD5_SUM
i pasuje do zaimportowanego celu. Podczas wypełniania pamięci podręcznej kompilacji, oblicz i zapisz
MD5_SUM w informacjach o kompilacji, jeśli jeszcze tam nie jest. To jest wolniejsze i prowadzi do
więcej przebudów, ale gwarantuje, że importowane cele i pliki informacji o kompilacji są zgodne
dokładnie.

-n
--próba
--po prostu-drukuj
--zwiad
Drukuj polecenia bez ich faktycznego wykonywania — niezawodnie, gdy polecenia zależą
na podstawie poprzednich wyników. Pozwala to zobaczyć, co zrobi makepp, bez konieczności faktycznego
zmianę jakichkolwiek plików.

Dokładniej rzecz biorąc, makepp wykonuje wszystkie rekurencyjne polecenia make normalnie (ale miejmy nadzieję, że
(nigdzie nie używasz rekurencyjnego make!). Inne polecenia są po prostu drukowane bez
Wykonywane. Nawet polecenia poprzedzone prefiksem „@” lub „noecho” są drukowane
po usunięciu znaku „@” lub „noecho”. Jednak polecenia poprzedzone znakiem „+” powinny
zostaną wykonane, ale obecnie tak się nie dzieje.

Ostrzeżenie: Polecenia wykonywane przez makepp z opcją „-n” niekoniecznie są takie same
Rzecz w tym, że działa bez „-n”. Sygnatury plików w ogóle się nie zmieniają z „-n”, co
oznacza, że makepp nie może wykonać dokładnie tych samych testów kompilacji, co w przypadku
Podpisy ulegają zmianie. Czasami będzie to miało znaczenie, jeśli używasz
Podpisy MD5 (domyślne dla poleceń kompilacji) lub jeśli masz powłokę
polecenia, które mogą lub nie zmienić datę.

Na przykład załóżmy, że generujesz .h plik za pomocą pewnego rodzaju preprocesora. To
może się wydarzyć na wiele różnych sposobów. Dla konkretów załóżmy, że automatycznie
wygeneruj listę prototypów dla funkcji zdefiniowanych w każdym module C (patrz
<http://cproto.sourceforge.net/> jak działa aplikacja „cproto” lub
<http://www.lemoda.net/c/cfunctions/> dla podobnych funkcji).

prototypy.h : *.c
cproto $(CPPFLAGS) $(wejścia) > $(wyjście)

Następnie każdy .c plik będzie zawierał prototypy.hCelem tego jest utrzymanie
automatycznie przekierowuj deklaracje dla wszystkich funkcji, więc jeśli zmienisz funkcję
podpis lub dodaj nową funkcję, nie musisz nigdy wstawiać forward ani extern
Deklaracje w dowolnym miejscu. Nie musisz nawet deklarować zależności plików .o.
w tym przypadku makepp zobaczy polecenie include i automatycznie sprawdzi, czy jest ono potrzebne
aby (ponownie) uruchomić cproto.

Załóżmy teraz, że zmienisz tylko jedną .c Plik. Co się stanie, gdy uruchomisz makepp z opcją „-n”?
w tym przypadku jest to, że zdaje sobie sprawę, że prototypy.h musi zostać przerobiony. W sumie
prawdopodobieństwo, przeróbka prototypy.h nie wpłynie na jego podpis – zawartość pliku będzie
prawdopodobnie będzie identyczny, ponieważ nie zmieniono żadnych argumentów funkcji, więc większość
czas, nic co zależy od prototypy.h Tak naprawdę trzeba go przekompilować. Ale makepp
nie wie tego, dopóki nie ma pozwolenia na wykonanie poleceń. Zakłada więc,
że wszystko, co od tego zależy prototypy.h również będzie musiał zostać ponownie skompilowany. Tak więc w
ten przykład, zmieniając jeden .c plik spowoduje, że „makepp -n” pomyśli, że każdy pojedynczy
.c plik wymaga ponownej kompilacji, mimo że najprawdopodobniej jest to zwykłe polecenie makepp
w rzeczywistości nie uruchomi wszystkich tych poleceń.

Taka sytuacja nie zdarza się często i może wystąpić tylko wtedy, gdy (a) używasz podpisu
metoda, która zależy od zawartości pliku, a nie daty, jako domyślna metoda kompilacji
metoda podpisu tak robi, lub (b) jeśli masz polecenia powłoki, które nie zawsze zmieniają
data. Np. w przypadku tradycyjnej implementacji make, która uwzględnia tylko daty
zamiast podpisów plików, czasami ludzie piszą takie polecenia:

prototypes.h : $(wildcard *.c) # Zhakowana technika nie jest konieczna dla makepp
cproto $(CPPFLAGS) $(inputs) > junk.h
jeśli cmp -s junk.h prototypes.h; wtedy \
rm śmieci.h; \
w przeciwnym razie \
mv śmieci.h prototypy.h; \
fi

Jeśli zatem ponowne uruchomienie cproto na wszystkich plikach wygeneruje dokładnie taką samą zawartość pliku,
Data pliku nie jest aktualizowana. To będzie dokładnie ten sam problem, co powyżej.
przykład z „makepp -n”: nie wiadomo, czy data na prototypy.h zmiany
dopóki polecenie nie zostanie faktycznie uruchomione, więc polecenie „makepp -n” nie może być w 100% dokładne.
(Należy pamiętać, że użycie tradycyjnego „make -n” również spowoduje dokładnie ten sam problem
ten przykład.)

„makepp -n” zawsze powinno drukować więcej poleceń niż zwykłe wywołanie makepp,
nie mniej. Jeśli wydrukuje mniej poleceń, oznacza to, że makepp nie wie o
pewna zależność; jakiś plik ulega zmianie, na podstawie której nie oczekuje się jego zmiany
tego, co wie o plikach, których dotyczy każda reguła. Oznacza to, że Twój plik makefile
ma błąd.

--no-cache-scaninfos
Nie zapisuj wyników skanowania, wymuszając jego ponowne wykonanie przy następnym użyciu makepp
biegnie.

--no-implicit-load
Nie ładuj automatycznie plików makefile z katalogów, do których się odwołują (zobacz „Ładowanie niejawne”)
w makepp_build_algorithm). Domyślnie makepp automatycznie ładuje plik makefile z
dowolny katalog zawierający zależność od jakiegoś celu, który musi zbudować, i z którego
dowolny katalog skanowany za pomocą symbolu wieloznacznego. Czasami jednak powoduje to
problem, ponieważ pliki makefile muszą być ładowane z różnymi zmiennymi wiersza poleceń lub
opcje i czy są one ładowane niejawnie przed ich jawnym załadowaniem przez
rekurencyjne wywołanie make lub instrukcja „load_makefile”, makepp przerywa działanie z
błąd. Możesz również wyłączyć ładowanie pliku makefile dla każdego katalogu osobno,
używając instrukcji „no_implicit_load” w jednym z plików makefile.

--brak dziennika
Nie zawracaj sobie głowy szczegółowym opisem tego, co zostało zrobione z plikiem dziennika.
domyślnie makepp wypisuje wyjaśnienie każdego pliku, który próbował zbudować, i
dlaczego go zbudowano lub nie zbudowano, do pliku o nazwie .makepp/log, czytelny z
makepplog, mppl. Może to być niezwykle przydatne przy debugowaniu pliku makefile – makepp
informuje Cię, jakie były jego zdaniem wszystkie zależności i które z nich uznał za
Zmieniono. Wymaga to jednak dodatkowego czasu procesora i lepiej nie zawracać sobie tym głowy.

--no-path-exe-dep
--no-path-executable-dependencies
Nie dodawaj niejawnych zależności od plików wykonywalnych pobranych z wyszukiwania poleceń
ścieżka. Jeśli ta opcja jest określona, makepp zakłada, że każdy plik wykonywalny, którego
zachowanie może ulec zmianie w nowej wersji, zostanie określone za pomocą nazwy zawierającej
ciąć.

Przydaje się to w przypadku programów takich jak grep i diff, które zawsze wykonują zasadniczo to samo
rzecz, nawet jeśli ich implementacja ulegnie zmianie, choć lepiej jest używać wbudowanej
Polecenia dla grep. Może to być również potrzebne w przypadku repozytoriów w klastrach NFS, gdzie
te same polecenia mogą nie mieć wszędzie tego samego znacznika czasu, co powoduje niepotrzebne
odbudowuje się w zależności od tego, na jakiej maszynie ktoś pracuje.

--no-populate-bc
Nie wypełniaj pamięci podręcznej kompilacji, ale nadal importuj z niej, gdy to możliwe. To jest
przydatne, gdy środowisko może spowodować, że cele zostaną wygenerowane inaczej, ale
Makepp nie wie o takich zależnościach. Przydatne jest również unikanie przeciążania
zbuduj pamięć podręczną z ogromną liczbą współbieżnych autorów, co może kolidować z jednym
drugiego.

--no-print-katalog
Wyłącz komunikaty o wejściu lub wyjściu z książki telefonicznej.

--no-remake-makefiles
Zwykle makepp ładuje każdy plik makefile, a następnie sprawdza, czy istnieje reguła
który określa sposób aktualizacji pliku makefile. Jeśli istnieje, a plik makefile musi zostać zaktualizowany,
odbudowany, polecenie jest wykonywane, a plik makefile jest ponownie odczytywany. Często powoduje to
problemy z plikami makefiles produkowanymi dla standardowego narzędzia make w systemie Unix, ponieważ (w moim przypadku)
(doświadczenie) często reguły make dotyczące aktualizacji plików make są niedokładne –
Często pomijają modyfikowane cele. Może to spowodować, że makepp będzie musiał przerobić wiele
Pliki niepotrzebnie. Często można rozwiązać ten problem, po prostu uniemożliwiając działanie makepp
z automatycznej aktualizacji pliku makefile (ale musisz pamiętać o jego aktualizacji przez
ręka).

--nie-ostrzegaj
Nie drukuj żadnych komunikatów ostrzegawczych na stderr, tylko do pliku dziennika. Większość komunikatów ostrzegawczych
dotyczą konstrukcji, które można zobaczyć w starszych plikach makefile, które makepp bierze pod uwagę
niebezpieczne, ale kilka z nich dotyczy możliwych błędów w pliku makefile.

-o filename
--assume-old=filename
--stary-plik=filename
Udaje, że określony plik nie uległ zmianie, nawet jeśli tak się stało. Wszelkie cele, które
zależą od tego pliku, nie zostaną odbudowane z powodu tego pliku, chociaż mogą być
odbudowany, jeśli inna zależność również uległa zmianie. Sam plik może, ale nie musi
zostać przebudowany w zależności od tego, czy jest nieaktualny w odniesieniu do swoich zależności.
(Aby temu zapobiec, użyj „--dont-build”.)

--override-signature=metoda
--override-signature-method=metoda
Podobnie jak „--signature-method”, ale nawet ta opcja zastępuje wybór dokonany przez analizatory poleceń.

--out-of-sandbox=filename
Wygeneruj błąd zamiast zapisywać pliki poza „piaskownicą”. Na przykład --dont-build,
Bardziej szczegółowe ścieżki zastępują ścieżki mniej szczegółowe. Domyślnie katalog główny systemu plików to
out-of-sandbox jeśli istnieją opcje „--sandbox”.

Celem piaskownicy jest umożliwienie bezpiecznego wykonywania wielu równoczesnych procesów makepp
operować na rozłącznych częściach systemu plików. Aby to działało niezawodnie,
współbieżne piaskownice nie mogą się na siebie nakładać, a każdy proces musi oznaczać piaskownicę każdego procesu
Inny współbieżny proces makepp dla --dont-read. Zobacz partycjonowanie w piaskownicach.

--populate-bc-only
Nie importuj z pamięci podręcznej kompilacji. Jest to przydatne, gdy chcesz przekazać cele do
skrytkę, ale nie chcesz polegać na jej zawartości (np. w przypadku misji)
kompilacje krytyczne).

--profil
Wyprowadź surowe znaczniki czasu przed i po każdej akcji.

-R katalog
--repozytorium=katalog
Określ podany katalog jako repozytorium (szczegóły w makepp_repositories).
Repozytoria są dodawane w kolejności określonej w wierszu poleceń, więc pierwsze z nich
Określony przez Ciebie ma pierwszeństwo. Wszystkie pliki w katalogu (i wszystkich jego podkatalogach)
są automatycznie łączone z bieżącym katalogiem (i podkatalogami), jeśli są
potrzebne.

Jeśli po „-R” podasz tylko katalog, jego zawartość zostanie powiązana z bieżącym katalogiem.
katalog. Możesz powiązać jego zawartość z dowolnym miejscem w systemie plików,
określenie lokalizacji przed znakiem równości, np.
"-R subdir1/subdir2=/users/joe/joes_nifty_library".

-r
--brak wbudowanych reguł
Nie ładuj domyślnych zestawów reguł. Jeśli ta opcja nie jest określona, a zmienna
„makepp_no_builtin” nie jest zdefiniowany w pliku makefile, wówczas zestaw reguł kompilacji
Dla każdego katalogu ładowany jest kod C, C++ i Fortran.

--rm-stale
--remove-stale
--remove-stale-files
Ignoruj nieaktualne pliki, zamiast traktować je jako nowe pliki źródłowe i usuwać je, jeśli
konieczne, aby zapobiec ich odczytaniu przez polecenie kompilacji. Nie jest to
domyślnie, ponieważ usuwa rzeczy, ale często jest to wymagane, aby
przyrostowe budowanie, aby działało prawidłowo.

Na przykład załóżmy, że istnieje biegi przełajowe plik wyglądający tak:

#dołącz "xh"
int main() { return X; }

Rozważ ten plik makefile:

$(fałszywa wartość domyślna): x
xh:
&echo "#define X 1" -o $@

W pewnym momencie zmieniasz plik makefile tak, aby wyglądał tak:

CFLAGS := -Idir
$(fałszywa wartość domyślna): x
dir/xh:
&mkdir -p $(katalog $@)
&echo "#define X 2" -o $@

Teraz, jeśli budujesz od podstaw, x wychodzi ze statusem 2, ale jeśli budujesz, podczas gdy stary
./xh plik nadal istnieje i nie określono opcji „--rm-stale”, to x wyjścia ze statusem
1, ponieważ dyrektywa include przejmuje nieaktualny wygenerowany plik nagłówkowy.

Jeśli budujesz z opcją „--rm-stale”, to ./xh jest usuwany, a wynik jest taki sam jak
czystej konstrukcji, co prawie zawsze jest dobrą rzeczą.

Należy pamiętać, że jeśli budujesz w repozytorium, należy najpierw podać tam tę opcję,
ponieważ importujący makepp nie wie, co może być nieaktualne w repozytorium.

Starsze pliki makefile czasami umieszczają regułę generowania pliku dołączonego po pliku dołączonym
Oświadczenie. MPP radzi sobie z tym jak gmake, przeładowując plik makefile na końcu
jeśli to konieczne. Oznacza to jednak, że po przebudowie wygląda to na przestarzałe w momencie, gdy jest
potrzebne i zostaną usunięte. Dlatego ta opcja wyłącza ten rodzaj przeładowywania.

-s
--cichy
--cichy
Nie powtarzaj poleceń i nie drukuj komunikatów informacyjnych, takich jak „Skanowanie” lub „Ładowanie”
plik makefile".

--piaskownica=katalog
--in-sandbox=katalog
--inside-sandbox=katalog
Ogranicz tę instancję makepp do poddrzewa zwykle większego drzewa kompilacji. Zobacz
partycjonowanie w piaskownicach.

--sandbox-ostrzegaj
---ostrzeżenie-piaskownicy
Zdegraduj naruszenia „w piaskownicy” i „nie czytaj” do ostrzeżeń zamiast błędów.
Zobacz partycjonowanie w piaskownicach.

--stop-wyścig
--przystanek-na-wyścigu
Wyjście w przypadku błędu zamiast tylko ostrzeżenia o kolizji dostępu do pamięci podręcznej kompilacji, która może
ustalać się.

--symlink-in-rep-as-file
--symlink-in-repository-as-file
Jeżeli repozytorium zawiera łącze symboliczne, to domyślnie to łącze symboliczne jest
importowane jako łącze, co oznacza, że celem importowanego łącza nie musi być
identyczny z celem łącza symbolicznego w repozytorium. Jeśli
Jeśli określono opcję „--symlink-in-repository-as-file”, wówczas łącze symboliczne jest
zaimportowany jako plik docelowy, co oznacza, że zaimportowany link wskazuje na ten sam plik
plik docelowy jako dowiązanie symboliczne w repozytorium. Jest to przydatne, jeśli dowiązanie symboliczne
Link w repozytorium miał mieć semantykę kopii w czasie kompilacji.

--tradycyjny
--tradycyjna-rekurencja
--traditional-recursive-make
Ta opcja jest dostępna, aby umożliwić programowi makepp pracę ze starymi plikami makefile, które używają rekurencji
make w szerokim zakresie, szczególnie z różnymi opcjami. Domyślnie rekurencyjne make jest
wdrażane przez podproces komunikujący się z procesem nadrzędnym; kompilacja jest
faktycznie wykonywane przez proces nadrzędny. Pozwala to na korzystanie z niektórych przydatnych funkcji Makepp, takich jak
repozytoriów do pracy z rekurencyjnymi wywołaniami make. Jednak ta technika
nie działa, jeśli używasz różnych opcji wiersza poleceń przy różnych wywołaniach
Rekurencyjne make. Zanim tego użyjesz, wypróbuj „--hybrid-recursive-make”.

Opcja „--traditional-recursive-make” sprawia, że makepp wykonuje rekurencyjne operacje make w ten sam sposób, co
tradycyjny make, umożliwiający działanie większej liczby plików make, ale także repozytoria i
Kompilacje równoległe nie działają poprawnie. Ta opcja jest już rzadko potrzebna i
makepp poinformuje Cię, jeśli napotka konstrukcję, która tego wymaga.

Jeśli skorzystasz z tej opcji, pliki dziennika będą się gromadzić w różnych katalogach
To się zmienia. Aby się ich pozbyć, użyj „makeppclean --logs --recurse” lub „mppc”.
-lr".

-v
--gadatliwy
Tryb szczegółowy. Wyjaśnia, co próbuje skompilować i dlaczego każdy plik jest kompilowany.
Może to być przydatne, jeśli uważasz, że plik jest zbyt często przebudowywany.

Ta opcja faktycznie pobiera to, co zostałoby zapisane w pliku dziennika i wyświetla to na
ekran. Zwykle łatwiej jest uruchomić makepp i następnie sprawdzić wynik
makepplog, który umożliwia dokonywanie różnych wyborów i przepisywanie niektórych opcji.

-V
--wersja
Wydrukuj numer wersji.

--wirtualna-piaskownica
Nie przepisuj informacji o kompilacji plików, które nie zostały utworzone przez ten proces makepp. Zobacz
partycjonowanie w piaskownicach.

-W filename
--assume-new=filename
--nowy-plik=filename
--co-jeśli=filename
Udaje, że określony plik został zmieniony, więc wszystkie cele zależne od tego pliku
zostanie odbudowany. Sam plik niekoniecznie ulega zmianie (może być zmieniony lub nie).
przebudowany, w zależności od tego, czy jest aktualny pod względem swoich zależności), ale
Wszystko, co od niego zależy, myśli, że się zmieniło. Może to być przydatne dla
debugowanie pliku makefile.

ŚRODOWISKO


Makepp przeszukuje w górę plik o nazwie .makeprc przy rozpoczynaniu i ponownie po każdym
Opcja „-C” lub „-c”. Za każdym razem, gdy znajdzie taki plik, ale tylko raz dla każdego pliku, odczyta
plik i analizować go jako potencjalnie cytowane opcje w jednym lub kilku wierszach. W przeciwieństwie do
opcja "-A", opcje będą analizowane względem katalogu, w którym znajduje się plik.

Makepp bierze pod uwagę następujące zmienne środowiskowe:

$MAKEFLAGS
Wszelkie flagi w tej zmiennej środowiskowej są wcześniej interpretowane jako opcje wiersza poleceń
Wszelkie jawne opcje. Wszystkie argumenty wiersza poleceń są umieszczane w tej zmiennej.

Należy pamiętać, że tradycyjna funkcja make również korzysta z tej zmiennej, więc jeśli trzeba użyć obu,
make i makepp, możesz rozważyć użycie „MAKEPPFLAGS”.

$MAKEPPFLAGS
To samo co „MAKEFLAGS” w przypadku makepp. Jeśli ta zmienna nie jest pusta,
wtedy „MAKEFLAGS” jest ignorowane. Czasami jest to przydatne zamiast „MAKEFLAGS”, jeśli
musisz użyć zarówno make jak i makepp, i musisz zachować te opcje oddzielnie.

$MAKEPP_CASE_SENSITIVE_FILENAMES
Makepp spróbuje ustalić, czy jego domyślny katalog uwzględnia wielkość liter,
Tworzenie pliku, a następnie dostęp do niego w innym przypadku. Zwykle działa to dobrze,
pod warunkiem, że wszystkie pliki, do których uzyskujesz dostęp, znajdują się w tym samym systemie plików, co Twój domyślny
katalogu, więc rzadko będziesz musiał korzystać z tej opcji.

Jeżeli ta zmienna jest obecna w środowisku, jej wartość (0 lub pusty ciąg dla
fałsz, cokolwiek innego jako prawda) nadpisze wybór makepp. Ta zmienna jest głównie
Przydatne w systemie Windows, jeśli chcesz zastąpić domyślne ustawienia makepp. Jeśli nie chcesz
traktuj nazwy plików z uwzględnieniem wielkości liter, a następnie makepp konwertuje wszystkie nazwy plików na małe litery,
co powoduje sporadyczne trudności. (Na przykład emacs może otworzyć kilka buforów, aby
(ten sam plik.)

Makepp obecnie nie obsługuje dobrze kompilacji w kilku systemach plików, jeśli taki istnieje.
rozróżnia wielkość liter, a drugi nie.

Użyj makepp_command online za pomocą 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.