Angielskifrancuskihiszpański

Ad


Ulubiona usługa OnWorks

makepp_build_algorithm - Online w chmurze

Uruchom makepp_build_algorithm w bezpłatnym dostawcy hostingu OnWorks w systemie Ubuntu Online, Fedora Online, emulatorze online systemu Windows lub emulatorze online systemu MAC OS

Jest to polecenie makepp_build_algorithm, które można uruchomić u dostawcy bezpłatnego hostingu OnWorks przy użyciu jednej z naszych wielu bezpłatnych stacji roboczych online, takich jak Ubuntu Online, Fedora Online, emulator online systemu Windows lub emulator online systemu MAC OS

PROGRAM:

IMIĘ


makepp_build_algorithm — Jak makepp wykonuje plik makefile

OPIS


Elementy wewnętrzne Makeppa różnią się od standardowego systemu Unix w zasadniczy sposób. Ta strona
szczegółowo opisuje różne filozofie.

Odwrócenie vs Naprzód wnioskowanie
Makepp działa w odwrotnym kierunku niż standardowa marka Uniksa. Tradycyjna wersja Uniksa
otrzymuje cel do zbudowania, a następnie znajduje regułę pasującą do znaków w pliku
docelowa nazwa pliku. Jeśli cel jest starszy niż którakolwiek z jego zależności reguły, to tak
jest przebudowany.

Rozważmy na przykład tę regułę wzorca:

%.o: %.cxx
$(CXX) $(CXXFLAGS) -c $(wejście) -o $(wyjście)

Kiedy make zdaje sobie sprawę, że musi utworzyć plik o nazwie „xyz.o”, przeszukuje swoją listę
reguły wzorca, dopóki nie zobaczy, że „xyz.o” pasuje do wzorca „%.o”, a następnie zastosuje
ta reguła.

Makepp działa w odwrotnym kierunku. Najpierw oblicza wszystkie możliwe pliki
skompiluj, stosując reguły pasujące do znaków w nazwach plików zależności. Wtedy, kiedy
musi zbudować plik, po prostu sprawdza, czy jest to jeden ze znanych mu plików
jak zbudować. Lista znanych plików jest zapisywana na podstawie bezwzględnej nazwy pliku.

Gdy makepp napotka powyższą regułę wzorca, wyszukuje wszystkie pliki w katalogu
pasujący do wzorca „%.cxx” (tj. „*.cxx”). Następnie zapamiętuje każdy z tych plików
że może wygenerować odpowiedni plik „.o”. Jeśli później makepp odkryje, że tak
może utworzyć kolejny plik „.cxx”, który obecnie nie istnieje, ta reguła również zostanie zastosowana
i odpowiedni plik „.o” zostanie zaznaczony.

Może się to wydawać nieco nieefektywne, ale w większości przypadków okazuje się, że nie jest aż tak powolne,
i często prawdą jest, że praktycznie wszystkie pliki, które można zbudować, zostały faktycznie zbudowane.
Znajomość pełnej listy plików, które można zbudować, ma kilka zalet:

· Symbole wieloznaczne mogą pasować do plików, które jeszcze nie istnieją, ale można je zbudować.

· Brak plików nagłówkowych wykrytych przez automatyczny skaner zależności
istnieć; makepp wie, gdzie będą. (Większość innych rozwiązań tego problemu
załóżmy, że wszystkie nagłówki, które jeszcze nie istnieją, znajdują się w bieżącym katalogu.)

· Repozytoria są znacznie prostsze w implementacji, ponieważ makepp wie z góry, jakie pliki je przechowują
może zrobić. (Aby uzyskać szczegółowe informacje, zobacz makepp_repositories.)

· Możliwe jest łatwe określenie, które pliki można zbudować (patrz
Funkcja „$(only_targets )”.

· Funkcja „$(infer_objects)” programu Makepp jest znacznie uproszczona dzięki wiedzy, czym są obiekty
dostępny.

Akta vs tekstowy wzory
Makepp kojarzy polecenia kompilacji z plikiem docelowym, a nie ze wzorcem tekstowym dla pliku
Nazwa pliku. Dlatego nie jest mylony przez różne nazwy tego samego pliku. Zatem dla
na przykład makepp będzie wiedział, że „./xyz” i „xyz” to ten sam plik, podczas gdy inny make
usługi komunalne mogą nie.

Jest to szczególnie ważne, ponieważ (w przeciwieństwie do standardowej make) makepp ładuje pliki makepp
z różnych katalogów. Aby pliki makefile były względnie niezależne, z
plik makefile najwyższego poziomu nie ma specjalnej pozycji, każdy plik makefile odnosi się do wszystkich plików
względem własnego katalogu. Tak więc, jeśli załadujesz plik makefile z podkatalogu
„other_stuff”, a ten plik makefile odnosi się do „../xyz”, makepp ponownie zda sobie sprawę, że to
ten sam plik, o którym mowa powyżej. (Nie będzie to również mylone przez katalog z miękkimi linkami
nazwy.)

Przechowywane budować Informacja
Makepp przechowuje znacznie więcej informacji o każdym tworzonym pliku, poza samą datą
znaczek (tylko o to dba standardowa marka). Informacje te obejmują:

· Podpis tego pliku w ostatniej kompilacji, więc wiemy, czy sam plik ma
zmianie.

· Nazwy każdego pliku zależności, w tym pliki dołączane i inne wywnioskowane pliki
automatycznie. Jeśli ta lista ulegnie zmianie, makepp zakłada, że ​​należy ją odbudować.

· Podpis każdej zależności. W ten sposób makepp wie, jak odbudować nie tylko wtedy, gdy plik
zależności są nowsze niż cel, ale kiedy w ogóle się zmieniają. To także sprawia
możliwe jest raczej stosowanie innych rodzajów podpisów, takich jak kryptograficzne sumy kontrolne
niż data pliku.

· Całe polecenie budowania (i jego cwd). W ten sposób, jeśli zmienisz polecenie kompilacji
(np. zmień opcje kompilatora), makepp wie, że ma odbudować, nawet jeśli pliki
sami się nie zmienili.

· Architektura. Jeśli skompilowałeś swój program w systemie Linux, a następnie przełącz się na
Solaris, makepp automatycznie wie, że wszystko należy przekompilować.

Makepp tworzy podkatalog w każdym katalogu, którego dotknie, o nazwie „.makepp”. The
informacje o kompilacji dla pliku filename w katalogu, w którym jest przechowywany .makepp/nazwa pliku. Jeśli
usuniesz ten podkatalog lub zmienisz pliki, makepp odbuduje wszystkie dotknięte pliki.

Domniemany załadunek
Jeśli makepp próbuje zbudować cel w katalogu i nie ma jeszcze na to reguły,
lub jeśli szuka plików pasujących do symbolu wieloznacznego w katalogu, będzie tam szukać
katalog, aby sprawdzić, czy plik makefile jest obecny. Jeśli tak, plik makefile zostanie załadowany
automatycznie.

Oznacza to, że zazwyczaj nie musisz wyraźnie mówić makeppowi, gdzie ma znaleźć
makefile — wystarczy, że odniesiesz się do pliku w innym katalogu, a makepp to zrobi
automatycznie dowiedzieć się, jak go zbudować.

Niejawne ładowanie nastąpi tylko wtedy, gdy katalog ma możliwość zapisu. Zatem jeśli chcesz
uniemożliwić Makeppowi próbę zbudowania wielu rzeczy, które nigdy się nie zmieniają, po prostu wykonaj
katalog tylko do odczytu.

Niejawne ładowanie nie nastąpi, jeśli znajdujesz się w drzewie pod a RootMakeppfile (.mk) oraz
inny plik makefile znajduje się poza tym drzewem. Jeśli chcesz tego raz, możesz dać
Opcja „--do-build=/” w makepp, aby umożliwić zbudowanie wszystkiego poza drzewem. Jeśli ty
zawsze tego chcesz, możesz umieścić instrukcję „load_makefile” gdzieś w drzewie
wyraźnie połącz go z drzewem.

Jeśli niejawne ładowanie stanie ci na drodze (np. makepp ładuje zbyt wiele plików makepp i marnuje to
czasu, bo inaczej naprawdę nie chcesz, aby próbował odbudować wszystkie rzeczy opisane w pliku
makefiles), możesz wyłączyć tę opcję dla wszystkich katalogów za pomocą polecenia „--noimplicit_load”.
line lub możesz wyłączyć ją dla wybranych katalogów za pomocą opcji „no_implicit_load”
instrukcja w pliku makefile.

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


Darmowe serwery i stacje robocze

Pobierz aplikacje Windows i Linux

  • 1
    Phaser
    Phaser
    Phaser to szybka, darmowa i zabawna gra otwarta
    źródłowa struktura gry HTML5, która oferuje
    Renderowanie WebGL i Canvas w poprzek
    przeglądarek internetowych na komputery i urządzenia mobilne. Gry
    może być współ...
    Pobierz Phaser
  • 2
    Silnik WASAL
    Silnik WASAL
    VASSAL to silnik gry do tworzenia
    elektroniczne wersje tradycyjnej tablicy
    i gry karciane. Zapewnia wsparcie dla
    renderowanie elementów gry i interakcja,
    i ...
    Pobierz silnik VASSAL
  • 3
    OpenPDF — rozwidlenie iText
    OpenPDF — rozwidlenie iText
    OpenPDF to biblioteka Java do tworzenia
    i edycji plików PDF z LGPL i
    Licencja open source MPL. OpenPDF to
    LGPL/MPL open source następca iText,
    w ...
    Pobierz OpenPDF — rozwidlenie iText
  • 4
    SAGA GIS
    SAGA GIS
    SAGA - System do Automatyzacji
    Analizy geologiczne - to geografia
    Oprogramowanie systemu informacyjnego (GIS) z
    ogromne możliwości geodanych
    przetwarzanie i an...
    Pobierz SAGA GIS
  • 5
    Przybornik dla Java/JTOOpen
    Przybornik dla Java/JTOOpen
    IBM Toolbox for Java / JTOpen to
    biblioteka klas Java obsługująca
    klient/serwer i programowanie internetowe
    modeli do systemu z systemem OS/400,
    i5/OS, lub...
    Pobierz Zestaw narzędzi dla języka Java/JTOpen
  • 6
    D3.js
    D3.js
    D3.js (lub D3 dla dokumentów opartych na danych)
    to biblioteka JavaScript, która pozwala
    do tworzenia dynamicznych, interaktywnych danych
    wizualizacje w przeglądarkach internetowych. Z D3
    ty...
    Pobierz plik D3.js
  • więcej »

Komendy systemu Linux

Ad