InggrisPerancisSpanyol

Ad


favorit OnWorks

makepp_build_algorithm - Online di Cloud

Jalankan makepp_build_algorithm di penyedia hosting gratis OnWorks melalui Ubuntu Online, Fedora Online, emulator online Windows atau emulator online MAC OS

Ini adalah perintah makepp_build_algorithm yang dapat dijalankan di penyedia hosting gratis OnWorks menggunakan salah satu dari beberapa workstation online gratis kami seperti Ubuntu Online, Fedora Online, Windows online emulator atau MAC OS online emulator

PROGRAM:

NAMA


makepp_build_algorithm -- Bagaimana makepp mengeksekusi makefile

DESKRIPSI


Internal Makepp berbeda dari standar Unix secara mendasar. Halaman ini
menjelaskan filosofi yang berbeda secara rinci.

Membalikkan vs meneruskan kesimpulan
Makepp bekerja dengan arah yang berlawanan dari make Unix standar. Unix tradisional membuat
diberikan target untuk dibangun, dan kemudian menemukan aturan yang cocok dengan karakter di
nama file sasaran. Jika target lebih tua dari salah satu dependensi aturannya, maka itu
dibangun kembali.

Misalnya, pertimbangkan aturan pola ini:

%.o: %.cxx
$(CXX) $(CXXFLAGS) -c $(masukan) -o $(keluaran)

Ketika membuat menyadari perlu membuat file bernama "xyz.o", ia mencari melalui daftar
aturan pola sampai terlihat bahwa "xyz.o" cocok dengan pola "%.o", dan kemudian berlaku
aturan ini.

Makepp bekerja dalam arah yang berlawanan. Ini pertama-tama menghitung semua file yang mungkin bisa
membangun dengan menerapkan aturan yang cocok dengan karakter dalam nama file ketergantungan. Lalu kapan
itu perlu membuat file, itu hanya melihat apakah itu salah satu file yang diketahuinya
cara membangun. Daftar file yang diketahui disimpan berdasarkan nama file absolut.

Ketika makepp menemukan aturan pola di atas, ia mencari semua file di direktori
cocok dengan pola "%.cxx" (yaitu, "*.cxx"). Untuk masing-masing file ini, ia akan mengingat
yang dapat menghasilkan file ".o" yang sesuai. Jika kemudian makepp menemukan bahwa
dapat membuat file ".cxx" lain yang saat ini tidak ada, aturan ini juga akan diterapkan
dan file ".o" yang sesuai akan ditandai.

Ini mungkin tampak agak tidak efisien, tetapi ternyata tidak terlalu lambat dalam banyak kasus,
dan seringkali benar bahwa hampir semua file yang dapat dibuat sebenarnya dibuat.
Dan mengetahui daftar lengkap file yang dapat dibangun memiliki beberapa keuntungan:

· Wildcard dapat mencocokkan file yang belum ada tetapi dapat dibuat.

· File header yang telah terdeteksi oleh pemindai ketergantungan otomatis tidak memiliki
untuk eksis; makepp tahu di mana mereka akan berada. (Sebagian besar solusi lain untuk masalah ini
asumsikan bahwa setiap tajuk yang belum ada ada di direktori saat ini.)

· Repositori jauh lebih sederhana untuk diterapkan karena makepp tahu sebelumnya file apa itu
dapat membuat. (Lihat makepp_repositories untuk detailnya.)

· Dimungkinkan untuk menentukan dengan mudah file mana yang dapat dibuat (lihat
Fungsi "$(only_targets )".

· Fungsi "$(infer_objects)" Makepp sangat disederhanakan dengan mengetahui objek apa itu
tersedia.

File vs tekstual pola
Rekan Makepp membuat perintah dengan file target, bukan ke pola tekstual untuk a
nama file. Oleh karena itu tidak bingung dengan nama yang berbeda untuk file yang sama. Jadi, untuk
contoh, makepp akan mengetahui bahwa "./xyz" dan dan "xyz" adalah file yang sama, sedangkan make lainnya
utilitas mungkin tidak.

Ini sangat penting karena (tidak seperti make standar) makepp memuat makefiles
dari direktori yang berbeda. Agar makefile relatif independen, dengan
tidak ada posisi khusus yang diberikan kepada makefile tingkat atas, setiap makefile mengacu pada semua file
relatif terhadap direktorinya sendiri. Jadi jika Anda memuat makefile dari subdirektori
"other_stuff", dan makefile itu merujuk ke "../xyz", makepp akan kembali menyadari bahwa itu
file yang sama yang disebutkan di atas. (Ini juga tidak akan bingung dengan direktori yang ditautkan secara lunak
nama.)

Disimpan membangun informasi
Makepp menyimpan lebih banyak informasi tentang setiap file yang dibuatnya lebih dari sekadar tanggal
cap (hanya itu yang diperhatikan oleh standar). Informasi ini meliputi:

· Tanda tangan file ini pada build terakhir, jadi kami tahu apakah file itu sendiri memiliki
berubah.

· Nama setiap file dependensi, termasuk file yang disertakan dan file lain yang disimpulkan
secara otomatis. Jika daftar ini berubah, maka makepp menganggap perlu dibangun kembali.

· Tanda tangan setiap ketergantungan. Dengan cara ini, makepp tahu untuk membangun kembali tidak hanya ketika
dependensi lebih baru dari target, tetapi ketika mereka berubah sama sekali. Ini juga membuat
mungkin untuk menggunakan jenis tanda tangan lain, seperti checksum kriptografis, sebagai gantinya
dari tanggal file.

· Seluruh perintah build (dan cwd-nya). Dengan cara ini jika Anda mengubah perintah build
(mis., ubah opsi kompiler), makepp tahu untuk membangun kembali bahkan jika file
sendiri tidak berubah.

· Arsitektur. Jika Anda telah mengkompilasi program Anda di Linux dan kemudian beralih ke
Solaris, makepp secara otomatis tahu untuk mengkompilasi ulang semuanya.

Makepp membuat subdirektori di setiap direktori yang disentuhnya yang disebut ".makepp". NS
membangun informasi untuk file nama file dalam direktori disimpan di .makepp/nama file. Jika
Anda menghapus subdirektori ini atau mengubah file, makepp akan membangun kembali semua file yang terpengaruh.

Implisit pemuatan
Jika makepp mencoba membuat target di direktori dan belum memiliki aturan untuk itu,
atau jika mencari file yang cocok dengan wildcard di direktori, itu akan terlihat di dalamnya
direktori untuk melihat apakah ada makefile. Jika demikian, makefile akan dimuat
otomatis.

Ini berarti Anda biasanya tidak perlu memberi tahu makepp secara eksplisit di mana menemukannya
makefiles--yang harus Anda lakukan adalah mereferensikan file di direktori lain, dan makepp akan
secara otomatis mencari tahu bagaimana membangunnya.

Pemuatan implisit hanya akan terjadi jika direktori dapat ditulis oleh Anda. Jadi jika Anda ingin
mencegah makepp mencoba membangun banyak hal yang tidak pernah berubah, cukup buat
direktori hanya-baca.

Pemuatan implisit tidak akan terjadi jika Anda berada di pohon di bawah a File RootMakepp(.mk) dan
makefile lain berada di luar pohon itu. Jika Anda menginginkan ini sekali, Anda dapat memberikan
Opsi "--do-build=/" ke makepp, untuk membuat segala sesuatu di luar pohon dapat dibangun. Jika kamu
selalu menginginkan ini, Anda dapat meletakkan pernyataan "load_makefile" di suatu tempat di dalam pohon untuk
secara eksplisit menghubungkannya ke pohon.

Jika pemuatan implisit menghalangi Anda (yaitu, makepp memuat terlalu banyak makefile dan membuangnya
waktu, atau Anda benar-benar tidak ingin mencoba membangun kembali semua hal yang dijelaskan dalam
makefiles), Anda dapat mematikannya untuk semua direktori menggunakan perintah "--noimplicit_load"
opsi baris, atau Anda dapat mematikannya untuk direktori yang dipilih menggunakan "no_implicit_load"
pernyataan di makefile Anda.

Gunakan makepp_build_algorithm online menggunakan layanan onworks.net


Server & Workstation Gratis

Unduh aplikasi Windows & Linux

  • 1
    Phaser
    Phaser
    Phaser adalah pembukaan yang cepat, gratis, dan menyenangkan
    kerangka kerja game HTML5 sumber yang menawarkan
    Rendering WebGL dan Canvas di seluruh
    browser web desktop dan seluler. permainan
    bisa bersama...
    Unduh Phaser.dll
  • 2
    Mesin VASSAL
    Mesin VASSAL
    VASSAL adalah mesin permainan untuk membuat
    versi elektronik dari papan tradisional
    dan permainan kartu. Ini memberikan dukungan untuk
    rendering dan interaksi potongan game,
    dan ...
    Unduh Mesin VASSAL
  • 3
    OpenPDF - Garpu iText
    OpenPDF - Garpu iText
    OpenPDF adalah perpustakaan Java untuk membuat
    dan mengedit file PDF dengan LGPL dan
    Lisensi sumber terbuka MPL. OpenPDF adalah
    LGPL/MPL penerus sumber terbuka iText,
    Sebuah...
    Unduh OpenPDF - Garpu iText
  • 4
    SAGA GIS
    SAGA GIS
    SAGA - Sistem untuk Otomatis
    Analisis Geoscientific - adalah Geografis
    Perangkat lunak Sistem Informasi (GIS) dengan
    kemampuan luar biasa untuk geodata
    pengolahan dan ...
    Unduh SAGA GIS
  • 5
    Toolbox untuk Java/JTOpen
    Toolbox untuk Java/JTOpen
    Toolbox IBM untuk Java / JTOpen adalah a
    perpustakaan kelas Java mendukung
    client/server dan pemrograman internet
    model ke sistem yang menjalankan OS/400,
    i5/OS, atau...
    Unduh Toolbox untuk Java/JTOpen
  • 6
    D3.js
    D3.js
    D3.js (atau D3 untuk Dokumen Berbasis Data)
    adalah perpustakaan JavaScript yang memungkinkan Anda
    untuk menghasilkan data yang dinamis dan interaktif
    visualisasi di browser web. Dengan D3
    kamu...
    Unduh D3.js
  • Lebih banyak lagi »

Perintah Linux

Ad