InggrisPerancisSpanyol

favorit OnWorks

bmake - Online di Cloud

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

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

PROGRAM:

NAMA


membuat — menjaga ketergantungan program

RINGKASAN


membuat [-BeikNnqrstWwX] [-C direktori] [-D variabel] [-d bendera] [-f makefile] [-I direktori]
[-J swasta] [-j max_jobs] [-m direktori] [-T fillet] [-V variabel] [variabel=nilai]
[target ...]

DESKRIPSI


membuat adalah program yang dirancang untuk menyederhanakan pemeliharaan program lain. masukannya adalah
daftar spesifikasi file yang menjadi sandaran program dan file lain. Jika tidak -f
makefile opsi makefile diberikan, membuat akan mencoba untuk membuka 'makefile' kemudian 'Makefile' di
untuk mengetahui spesifikasinya. Jika file '.bergantung' ada, itu dibaca (lihat mkdep(1)).

Halaman manual ini dimaksudkan sebagai dokumen referensi saja. Untuk deskripsi lebih lengkap
of membuat dan makefile, silakan merujuk ke membuat - A Tutorial.

membuat akan menambahkan isi dari MAKEFLAG variabel lingkungan ke baris perintah
argumen sebelum menguraikannya.

Pilihannya adalah sebagai berikut:

-B Cobalah untuk kompatibel dengan menjalankan satu shell per perintah dan dengan
mengeksekusi perintah untuk membuat sumber garis ketergantungan secara berurutan.

-C direktori
Mengubah direktori sebelum membaca makefile atau melakukan hal lain. Jika
beberapa -C opsi ditentukan, masing-masing ditafsirkan relatif terhadap yang sebelumnya:
-C / -C dll adalah setara dengan -C / Etc.

-D variabel
Menetapkan variabel menjadi 1, dalam konteks global.

-d [-]bendera
Aktifkan debugging, dan tentukan bagian mana dari membuat adalah untuk mencetak debugging
informasi. Kecuali jika bendera didahului oleh '-' mereka ditambahkan ke MAKEFLAG
variabel lingkungan dan akan diproses oleh setiap proses pembuatan anak. Secara default,
informasi debug dicetak ke kesalahan standar, tetapi ini dapat diubah menggunakan
itu F bendera debug. Keluaran debug selalu tidak disangga; selain itu, jika
debugging diaktifkan tetapi output debugging tidak diarahkan ke output standar, lalu
output standar adalah buffer baris. Flags adalah satu atau lebih dari berikut ini:

A Cetak semua informasi debug yang mungkin; setara dengan menentukan semua
tanda debug.

a Cetak informasi debug tentang pencarian arsip dan caching.

C Cetak informasi debug tentang direktori kerja saat ini.

c Cetak informasi debug tentang evaluasi bersyarat.

d Cetak informasi debug tentang pencarian direktori dan caching.

e Cetak informasi debug tentang perintah dan target yang gagal.

F[+]nama file
Tentukan di mana output debugging ditulis. Ini pasti bendera terakhir,
karena menghabiskan sisa argumen. Jika karakter
segera setelah flag 'F' adalah '+', maka file akan dibuka di
tambahkan mode; jika tidak, file akan ditimpa. Jika nama filenya adalah
'stdout' atau 'stderr' maka output debug akan ditulis ke standar
output atau deskriptor file output kesalahan standar masing-masing (dan tanda '+'
pilihan tidak berpengaruh). Jika tidak, output akan ditulis ke nama
mengajukan. Jika nama file berakhiran '.%d' maka '%d' diganti dengan pid.

f Cetak informasi debug tentang evaluasi loop.

g1 Cetak grafik input sebelum membuat apa pun.

g2 Cetak grafik input setelah membuat semuanya, atau sebelum keluar karena kesalahan.

g3 Cetak grafik input sebelum keluar pada kesalahan.

j Cetak informasi debug tentang menjalankan banyak shell.

l Perintah cetak di Makefiles terlepas dari apakah itu diawali atau tidak
oleh '@' atau bendera "tenang" lainnya. Juga dikenal sebagai perilaku "keras".

M Cetak informasi debug tentang keputusan mode "meta" tentang target.

m Cetak informasi debug tentang membuat target, termasuk modifikasi
tanggal.

n Jangan hapus skrip perintah sementara yang dibuat saat menjalankan perintah.
Skrip sementara ini dibuat di direktori yang dirujuk oleh
Variabel lingkungan TMPDIR, atau di / Tmp jika TMPDIR tidak disetel atau disetel ke
string kosong. Skrip sementara dibuat oleh mkstemp(3), dan memiliki
nama-nama formulir buatXXXXXX. CATATAN: Ini dapat membuat banyak file di TMPDIR atau
/ Tmp, jadi gunakan dengan hati-hati.

p Cetak informasi debug tentang penguraian makefile.

s Cetak informasi debug tentang aturan transformasi sufiks.

t Cetak informasi debug tentang pemeliharaan daftar target.

V Paksa -V opsi untuk mencetak nilai mentah variabel.

v Cetak informasi debug tentang penetapan variabel.

x Jalankan perintah shell dengan -x jadi perintah sebenarnya dicetak sebagaimana adanya
dieksekusi.

-e Tetapkan bahwa variabel lingkungan menimpa penetapan makro dalam makefiles.

-f makefile
Tentukan makefile untuk dibaca alih-alih default 'makefile'. Jika makefile adalah '-',
input standar dibaca. Beberapa makefile dapat ditentukan, dan dibaca di
pesanan yang ditentukan.

-I direktori
Tentukan direktori untuk mencari makefile dan makefile yang disertakan. NS
direktori sistem makefile (atau direktori, lihat -m pilihan) secara otomatis
dimasukkan sebagai bagian dari daftar ini.

-i Abaikan keluar bukan nol dari perintah shell di makefile. Setara dengan menentukan
'-' sebelum setiap baris perintah di makefile.

-J swasta
Opsi ini harus tidak akan ditentukan oleh pengguna.

Ketika j opsi sedang digunakan dalam pembuatan rekursif, opsi ini diteruskan oleh make to
child membuat untuk memungkinkan semua proses make dalam build bekerja sama untuk menghindari
membebani sistem.

-j max_jobs
Tentukan jumlah maksimum pekerjaan yang membuat mungkin telah berjalan pada satu waktu. NS
nilai disimpan dalam .BUAT. PEKERJAAN. Menonaktifkan mode kompatibilitas, kecuali jika B bendera adalah
juga ditentukan. Saat mode kompatibilitas dimatikan, semua perintah yang terkait dengan a
target dieksekusi dalam satu permintaan shell sebagai lawan dari yang tradisional
permintaan shell per baris. Ini dapat mematahkan skrip tradisional yang berubah
direktori pada setiap permintaan perintah dan kemudian berharap untuk memulai dengan yang baru
lingkungan pada baris berikutnya. Lebih efisien untuk memperbaiki skrip daripada
daripada mengaktifkan kompatibilitas mundur.

-k Lanjutkan pemrosesan setelah kesalahan ditemukan, tetapi hanya pada target yang melakukannya
tidak tergantung pada target yang pembuatannya menyebabkan kesalahan.

-m direktori
Tentukan direktori untuk mencari sys.mk dan makefile yang disertakan melalui
fillet-gaya termasuk pernyataan. NS -m opsi dapat digunakan beberapa kali untuk membentuk
jalur pencarian. Jalur ini akan menimpa sistem default termasuk jalur:
/usr/bagikan/mk. Selanjutnya sistem termasuk jalur akan ditambahkan ke pencarian
jalan yang digunakan untuk "fillet"-style termasuk pernyataan (lihat -I pilihan).

Jika nama file atau direktori di -m argumen (atau lingkungan MAKESYSPATH
variabel) dimulai dengan string ".../" lalu membuat akan mencari yang ditentukan
file atau direktori bernama di bagian yang tersisa dari string argumen. Pencarian
dimulai dengan direktori Makefile saat ini dan kemudian bekerja ke atas menuju
akar dari sistem file. Jika pencarian berhasil, maka direktori yang dihasilkan
menggantikan spesifikasi ".../" di -m argumen. Jika digunakan, fitur ini memungkinkan
membuat untuk dengan mudah mencari di pohon sumber saat ini untuk file sys.mk yang disesuaikan (mis.,
dengan menggunakan ".../mk/sys.mk" sebagai argumen).

-n Tampilkan perintah yang akan dieksekusi, tetapi tidak benar-benar menjalankannya
kecuali target bergantung pada sumber khusus .MAKE (lihat di bawah).

-N Tampilkan perintah yang akan dieksekusi, tetapi tidak benar-benar mengeksekusi apapun
dari mereka; berguna untuk men-debug makefile tingkat atas tanpa turun ke
subdirektori.

-q Jangan menjalankan perintah apa pun, tetapi keluar dari 0 jika target yang ditentukan adalah yang terbaru dan
1, sebaliknya.

-r Jangan gunakan aturan bawaan yang ditentukan dalam makefile sistem.

-s Jangan menggemakan perintah apa pun saat dijalankan. Setara dengan menentukan '@' sebelum
setiap baris perintah di makefile.

-T jejak file
Saat digunakan dengan -j bendera, tambahkan catatan jejak ke jejak file untuk setiap pekerjaan dimulai
dan selesai.

-t Daripada membangun kembali target seperti yang ditentukan dalam makefile, buat atau perbarui
waktu modifikasi untuk membuatnya tampak up-to-date.

-V variabel
Mencetak membuatgagasan tentang nilai variabel, dalam konteks global. Jangan membangun
target apapun. Beberapa contoh opsi ini dapat ditentukan; variabel akan
dicetak satu per baris, dengan baris kosong untuk setiap variabel nol atau tidak terdefinisi. Jika
variabel berisi '$' maka nilainya akan diperluas sebelum dicetak.

-W Perlakukan peringatan apa pun selama penguraian makefile sebagai kesalahan.

-w Cetak pesan masuk dan keluar direktori, pemrosesan sebelum dan sesudah.

-X Jangan mengekspor variabel yang diteruskan pada baris perintah ke lingkungan satu per satu.
Variabel yang diteruskan pada baris perintah masih diekspor melalui MAKEFLAG
variabel lingkungan. Opsi ini mungkin berguna pada sistem yang memiliki batas kecil
pada ukuran argumen perintah.

variabel=nilai
Tetapkan nilai variabel variabel untuk nilai. Biasanya, semua nilai diteruskan pada
baris perintah juga diekspor ke sub-merek di lingkungan. NS -X bendera
menonaktifkan perilaku ini. Penugasan variabel harus mengikuti opsi untuk POSIX
kompatibilitas tetapi tidak ada pemesanan yang diberlakukan.

Ada tujuh jenis baris yang berbeda dalam makefile: spesifikasi ketergantungan file,
perintah shell, tugas variabel, termasuk pernyataan, arahan bersyarat, untuk loop,
dan komentar.

Secara umum, baris dapat dilanjutkan dari satu baris ke baris berikutnya dengan mengakhirinya dengan garis miring terbalik
('\'). Karakter baris baru tambahan dan spasi awal pada baris berikut adalah
dikompresi menjadi satu ruang.

FILE KETERGANTUNGAN SPESIFIKASI


Garis ketergantungan terdiri dari satu atau lebih target, operator, dan nol atau lebih sumber.
Ini menciptakan hubungan di mana target "bergantung" pada sumber dan biasanya
diciptakan dari mereka. Hubungan yang tepat antara target dan sumber ditentukan
oleh operator yang memisahkannya. Ketiga operator tersebut adalah sebagai berikut:

: Target dianggap kedaluwarsa jika waktu modifikasinya kurang dari target mana pun
dari sumbernya. Sumber untuk target terakumulasi melalui garis ketergantungan saat ini
operator digunakan. Target dihapus jika membuat terganggu.

! Target selalu dibuat ulang, tetapi tidak sampai semua sumber diperiksa dan dibuat ulang.
dibuat sesuai kebutuhan. Sumber untuk target terakumulasi melalui garis ketergantungan saat ini
operator digunakan. Target dihapus jika membuat terganggu.

:: Jika tidak ada sumber yang ditentukan, target selalu dibuat ulang. Jika tidak, targetnya adalah
dianggap ketinggalan zaman jika salah satu sumbernya telah dimodifikasi lebih baru daripada
target. Sumber untuk target tidak terakumulasi melalui garis ketergantungan saat ini
operator digunakan. Target tidak akan dihapus jika membuat terganggu.

Target dan sumber mungkin berisi nilai karakter pengganti shell '?', '*', '[]', dan '{}'. NS
nilai '?', '*', dan '[]' hanya dapat digunakan sebagai bagian dari komponen akhir dari target atau
source, dan harus digunakan untuk mendeskripsikan file yang ada. Nilai '{}' tidak harus
digunakan untuk menggambarkan file yang ada. Perluasan dalam urutan direktori, bukan menurut abjad seperti
dilakukan di dalam cangkang.

SHELL PERINTAH


Setiap target mungkin telah menghubungkannya dengan satu atau lebih baris perintah shell, biasanya digunakan
untuk membuat sasaran. Setiap baris dalam skrip ini harus didahului oleh tab. (Untuk
alasan historis, spasi tidak diterima.) Sementara target dapat muncul dalam banyak ketergantungan
baris jika diinginkan, secara default hanya satu dari aturan ini yang dapat diikuti oleh skrip pembuatan.
Jika '::' operator digunakan, namun, semua aturan dapat menyertakan skrip dan skrip tersebut
dieksekusi dalam urutan yang ditemukan.

Setiap baris diperlakukan sebagai perintah shell yang terpisah, kecuali akhir baris diloloskan dengan a
garis miring terbalik ('\') dalam hal ini baris tersebut dan baris berikutnya digabungkan. Jika karakter pertama
dari perintah adalah kombinasi dari '@','+', atau '-', Perintah tersebut diperlakukan secara khusus. A
'@' menyebabkan perintah tidak digaungkan sebelum dieksekusi. A '+' menyebabkan perintah menjadi
dieksekusi bahkan ketika -n diberikan. Ini mirip dengan efek .MAKE special
sumber, kecuali bahwa efeknya dapat dibatasi pada satu baris skrip. A '-' di
mode kompatibilitas menyebabkan status keluar bukan nol dari baris perintah diabaikan.

Ketika membuat dijalankan dalam mode pekerjaan dengan -j max_jobs, seluruh skrip untuk target diumpankan ke
satu contoh shell. Dalam mode kompatibilitas (non-pekerjaan), setiap perintah dijalankan dalam a
proses terpisah. Jika perintah berisi karakter meta shell
('#=|^(){};&<>*?[]:$`\\n') akan diteruskan ke shell; sebaliknya membuat akan mencoba
eksekusi langsung. Jika sebuah baris dimulai dengan '-' dan shell telah mengaktifkan ErrCtl kemudian gagal
dari baris perintah akan diabaikan seperti dalam mode kompatibilitas. Sebaliknya '-' mempengaruhi
seluruh pekerjaan; skrip akan berhenti pada baris perintah pertama yang gagal, tetapi target akan
tidak dianggap gagal.

Makefile harus ditulis sedemikian rupa sehingga mode membuat operasi tidak mengubah mereka
perilaku. Misalnya, perintah apa pun yang perlu menggunakan "cd" atau "chdir" tanpa berpotensi
mengubah direktori untuk perintah selanjutnya harus dimasukkan ke dalam tanda kurung sehingga dijalankan
dalam subkulit. Untuk memaksa penggunaan satu cangkang, hindari jeda garis untuk membuat
seluruh skrip satu perintah. Sebagai contoh:

hindari-chdir-efek samping:
@echo Membangun $@ di `pwd`
@(cd ${.CURDIR} && ${BUAT} $@)
@echo Kembali ke `pwd`

pastikan-satu-Shell-terlepas-dari-mode:
@echo Membangun $@ di `pwd`; \
(cd ${.CURDIR} && ${BUAT} $@); \
echo Kembali ke `pwd`

Sejak membuat akan chdir(2) untuk '.OBJDIR' sebelum mengeksekusi target apa pun, setiap proses anak
dimulai dengan itu sebagai direktori kerjanya saat ini.

VARIABEL TUGAS


Variabel di make sangat mirip dengan variabel di shell, dan, menurut tradisi, terdiri dari semua
huruf besar.

Variabel tugas pengubah
Lima operator yang dapat digunakan untuk memberikan nilai pada variabel adalah sebagai berikut:

= Tetapkan nilai ke variabel. Setiap nilai sebelumnya diganti.

+= Tambahkan nilai ke nilai variabel saat ini.

?= Tetapkan nilai ke variabel jika belum ditentukan.

:= Tetapkan dengan ekspansi, yaitu memperluas nilai sebelum menetapkannya ke variabel.
Biasanya, ekspansi tidak dilakukan sampai variabel direferensikan. CATATAN: Referensi
untuk variabel tak terdefinisi adalah tidak diperluas. Ini dapat menyebabkan masalah ketika variabel
pengubah digunakan.

!= Perluas nilainya dan berikan ke shell untuk dieksekusi dan tetapkan hasilnya ke
variabel. Setiap baris baru dalam hasil diganti dengan spasi.

Setiap spasi putih sebelum ditetapkan nilai dihapus; jika nilainya ditambahkan, a
spasi tunggal disisipkan di antara konten variabel sebelumnya dan yang ditambahkan
nilai.

Variabel diperluas dengan mengapit nama variabel dengan kurung kurawal ('{}') atau
kurung ('()') dan mendahuluinya dengan tanda dolar ('$'). Jika nama variabel mengandung
hanya satu huruf, kurung kurawal atau tanda kurung tidak diperlukan. Ini lebih pendek
bentuk tidak dianjurkan.

Jika nama variabel berisi satu dolar, maka nama itu sendiri diperluas terlebih dahulu. Ini memungkinkan
nama variabel yang hampir arbitrer, namun nama yang mengandung dolar, kurung kurawal, kurung, atau
spasi benar-benar sebaiknya dihindari!

Jika hasil dari perluasan variabel berisi tanda dolar ('$') string diperluas
lagi.

Substitusi variabel terjadi pada tiga waktu yang berbeda, tergantung di mana variabel tersebut berada
sedang digunakan.

1. Variabel dalam garis ketergantungan diperluas saat garis dibaca.

2. Variabel dalam perintah shell diperluas ketika perintah shell dijalankan.

3. Variabel indeks loop “.for” diperluas pada setiap iterasi loop. Perhatikan bahwa lainnya
variabel tidak diperluas di dalam loop sehingga kode contoh berikut:

.untuk saya dalam 1 2 3
a+= ${i}
j= ${i}
b+= ${j}
.endfor

semua:
@gema ${a}
@gema ${b}

akan mencetak:

1 2 3
3 3 3

Karena ${a} berisi “1 2 3” setelah loop dieksekusi, ${b} berisi “${j}
${j} ${j}” yang diperluas menjadi “3 3 3” karena setelah loop selesai ${j} berisi “3”.

Variabel kelas-kelas
Empat kelas variabel yang berbeda (dalam urutan prioritas yang meningkat) adalah:

Variabel lingkungan
Variabel didefinisikan sebagai bagian dari membuatlingkungan.

Variabel global
Variabel yang didefinisikan dalam makefile atau dalam makefile yang disertakan.

Variabel baris perintah
Variabel didefinisikan sebagai bagian dari baris perintah.

Variabel lokal
Variabel yang didefinisikan khusus untuk target tertentu.

Variabel lokal semuanya ada di dalamnya dan nilainya bervariasi secara ajaib dari target ke target. Dia
saat ini tidak mungkin untuk mendefinisikan variabel lokal baru. Ketujuh variabel lokal tersebut adalah sebagai
berikut:

.ALLSRC Daftar semua sumber untuk target ini; juga dikenal sebagai '>'.

.ARSIP Nama file arsip; juga dikenal sebagai '!'.

.IMPSRC Dalam aturan transformasi sufiks, nama/jalur sumber dari mana
target harus diubah (sumber "tersirat"); juga dikenal sebagai '<'. Dia
tidak didefinisikan dalam aturan eksplisit.

.ANGGOTA nama anggota arsip; juga dikenal sebagai '%'.

.ODATE Daftar sumber untuk target ini yang dianggap ketinggalan zaman; juga dikenal
sebagai '?'.

.AWALAN Awalan file target, hanya berisi bagian file, tanpa akhiran
atau komponen direktori sebelumnya; juga dikenal sebagai '*'. Akhiran harus
salah satu sufiks yang diketahui dideklarasikan dengan .SUFIKS atau tidak akan
diakui.

.TARGET Nama sasaran; juga dikenal sebagai '@'.

Bentuk yang lebih pendek ('>','!','<','%','?','*', dan'@') diizinkan untuk mundur
kompatibilitas dengan makefile historis dan pembuatan POSIX lawas dan tidak direkomendasikan.

Varian dari variabel-variabel ini dengan tanda baca segera diikuti oleh 'D' atau 'F', misalnya
'$(@D)', adalah bentuk warisan yang setara dengan menggunakan pengubah ':H' dan ':T'. Bentuk-bentuk ini adalah
diterima untuk kompatibilitas dengan AT&T System V UNIX makefiles dan POSIX tetapi tidak
direkomendasikan.

Empat dari variabel lokal dapat digunakan dalam sumber pada garis ketergantungan karena mereka berkembang
ke nilai yang tepat untuk setiap target di telepon. Variabel ini adalah '.TARGET','.AWALAN',
'.ARSIP', dan'.ANGGOTA'.

Tambahan built-in variabel
Selain itu, membuat set atau tahu tentang variabel berikut:

$ Tanda dolar tunggal '$', yaitu '$$' berkembang menjadi tanda dolar tunggal.

.SEMUA TARGET Daftar semua target yang ditemui di Makefile. Jika dievaluasi selama
Penguraian Makefile, hanya mencantumkan target yang ditemui sejauh ini.

.CURDIR Jalur ke direktori tempat membuat dieksekusi. Lihat deskripsi
dari 'PWD' untuk lebih jelasnya.

.TERMASUK DARIDIR
Direktori file tempat Makefile ini disertakan.

.TERMASUK DARI FILE
Nama file dari file Makefile ini disertakan.

BUAT nama itu membuat dieksekusi dengan (argumen[0]). Untuk kompatibilitas membuat
juga mengatur .MEMBUAT dengan nilai yang sama. Variabel yang lebih disukai untuk digunakan adalah
variabel lingkungan MAKE karena lebih kompatibel dengan versi lain
of membuat dan tidak bisa disamakan dengan target khusus dengan nama yang sama.

.BUAT.DEPENDFILE
Beri nama makefile (default '.bergantung') dari mana dependensi yang dihasilkan adalah
baca.

.BUAT.EXPAND_VARIABLES
Boolean yang mengontrol perilaku default dari -V .

.BUAT.EKSPOR Daftar variabel yang diekspor oleh membuat.

.BUAT. PEKERJAAN Argumen untuk -j .

.BUAT.JOB.PREFIX
If membuat dijalankan dengan j kemudian output untuk setiap target diawali dengan token
'--- target ---' bagian pertama yang dapat dikontrol melalui
.BUAT.JOB.PREFIX. Jika .BUAT.JOB.PREFIX kosong, tidak ada token yang dicetak.
Misalnya: .MAKE.JOB.PREFIX=${.newline}---${.MAKE:T}[${.MAKE.PID}] akan
menghasilkan token seperti '---make[1234] target ---' membuatnya lebih mudah untuk melacak
derajat paralelisme yang dicapai.

MAKEFLAGS Variabel lingkungan 'MAKEFLAGS' dapat berisi apa saja yang mungkin
ditentukan pada membuatbaris perintah. Apa pun yang ditentukan pada membuatperintah
baris ditambahkan ke variabel 'MAKEFLAGS' yang kemudian dimasukkan ke dalam
lingkungan untuk semua program yang membuat mengeksekusi.

.BUAT.LEVEL Kedalaman rekursi dari membuat. Contoh awal dari membuat akan menjadi 0, dan
nilai yang bertambah dimasukkan ke dalam lingkungan untuk dilihat oleh yang berikutnya
generasi. Ini memungkinkan pengujian seperti: .if ${.MAKE.LEVEL} == 0 untuk melindungi
hal-hal yang seharusnya hanya dievaluasi dalam contoh awal membuat.

.MAKE.MAKEFILE_PREFERENCE
Daftar nama makefile yang diurutkan (default 'makefile','Makefile') itu
membuat Akan mencari.

.BUAT.MAKEFILES
Daftar makefile yang dibaca oleh membuat, yang berguna untuk melacak
dependensi. Setiap makefile direkam hanya sekali, berapa pun jumlahnya
kali membaca.

.BUAT.MODE Diproses setelah membaca semua makefile. Dapat mempengaruhi mode yang membuat berjalan
in. Ini dapat berisi sejumlah kata kunci:

compat Seperti -B, menempatkan membuat ke mode "kompat".

meta Menempatkan membuat ke mode "meta", di mana file meta dibuat untuk
setiap target untuk menangkap perintah yang dijalankan, output yang dihasilkan dan
if Filemon(4) tersedia, panggilan sistem yang dari
tertarik kepada membuat. Output yang ditangkap bisa sangat berguna ketika
mendiagnosis kesalahan.

curdirOke= bf Biasanya membuat tidak akan membuat file .meta di '.CURDIR'. Ini
dapat ditimpa dengan menyetel bf ke nilai yang mewakili
Benar.

env Untuk debugging, akan berguna untuk menyertakan lingkungan di
file .meta.

bertele-tele Jika dalam mode "meta", cetak petunjuk tentang target yang sedang dibangun.
Ini berguna jika build sebaliknya berjalan tanpa suara. NS
pesan dicetak nilai: .BUAT.META.PREFIX.

abaikan-cmd Beberapa makefile memiliki perintah yang tidak stabil. Ini
kata kunci menyebabkan mereka diabaikan untuk menentukan apakah a
target kedaluwarsa dalam mode "meta". Lihat juga .NOMETA_CMP.

diam = bf If bf benar, ketika file .meta dibuat, tandai target
.DIAM.

.MAKE.META.BAILIWICK
Dalam mode "meta", memberikan daftar awalan yang cocok dengan direktori
dikontrol oleh membuat. Jika file yang dihasilkan di luar .OBJDIR tapi
dalam bailiwick tersebut hilang, target saat ini dianggap out-of-
tanggal.

.BUAT.META.CREATED
Dalam mode "meta", variabel ini berisi daftar semua file meta yang diperbarui.
Jika tidak kosong, dapat digunakan untuk memicu pemrosesan .BUAT.META.FILES.

.BUAT.META.FILES
Dalam mode "meta", variabel ini berisi daftar semua file meta yang digunakan
(diperbarui atau tidak). Daftar ini dapat digunakan untuk memproses file meta ke
mengekstrak informasi ketergantungan.

.MAKE.META.IGNORE_PATHS
Menyediakan daftar awalan jalur yang harus diabaikan; karena
konten diharapkan berubah dari waktu ke waktu. Daftar default mencakup: '/ dev
/ Etc / proc / Tmp / var / run / var / tmp'

.BUAT.META.PREFIX
Mendefinisikan pesan yang dicetak untuk setiap file meta yang diperbarui dalam "meta verbose"
mode. Nilai defaultnya adalah:
Membangun ${.TARGET:H:tA}/${.TARGET:T}

.MAKEOVERRIDE Variabel ini digunakan untuk mencatat nama-nama variabel yang ditugaskan pada
baris perintah, sehingga dapat diekspor sebagai bagian dari 'MAKEFLAGS'. Ini
perilaku dapat dinonaktifkan dengan menetapkan nilai kosong ke '.MAKEOVERRIDE'
dalam makefile. Variabel tambahan dapat diekspor dari makefile dengan
menambahkan nama mereka ke '.MAKEOVERRIDE'. 'MAKEFLAGS' diekspor kembali
kapan pun '.MAKEOVERRIDE' dimodifikasi.

.BUAT.PATH_FILEMON
If membuat dibangun dengan Filemon(4) dukungan, ini diatur ke jalur
simpul perangkat. Ini memungkinkan makefile untuk menguji dukungan ini.

.BUAT.PID ID proses dari membuat.

.BUAT.PPID Proses-id induk dari membuat.

.BUAT.HEMAT_DOLLAR
nilai harus berupa bool yang mengontrol apakah '$$' dipertahankan saat melakukan
':=' tugas. Standarnya salah, untuk kompatibilitas mundur. Mengatur
benar untuk kompatibilitas dengan merek lain. Jika disetel ke false, '$$' menjadi
'$' sesuai aturan evaluasi normal.

BUAT_PRINT_VAR_ON_ERROR
Ketika membuat berhenti karena kesalahan, ia mencetak namanya dan nilai
'.CURDIR' serta nilai dari setiap variabel bernama di
'BUAT_PRINT_VAR_ON_ERROR'.

.garis baru Variabel ini hanya diberi karakter baris baru sebagai nilainya. Ini
memungkinkan ekspansi menggunakan :@ pengubah untuk menempatkan baris baru di antara iterasi
loop daripada spasi. Misalnya, pencetakan
'BUAT_PRINT_VAR_ON_ERROR' dapat dilakukan sebagai
${MAKE_PRINT_VAR_ON_ERROR:@v@$v='${$v}'${.newline}@}.

.OBJDIR Jalur ke direktori tempat target dibuat. Nilainya adalah
ditentukan dengan mencoba chdir(2) ke direktori berikut secara berurutan dan
menggunakan pertandingan pertama:

1. ${MAKEOBJDIRPREFIX}${.CURDIR}

(Hanya jika 'MAKEOBJDIRPREFIX' diatur di lingkungan atau pada perintah
garis.)

2. ${MAKEOBJDIR}

(Hanya jika 'MAKEOBJDIR' diatur di lingkungan atau pada perintah
garis.)

3. ${.CURDIR}/obj.${MESIN}

4. ${.CURDIR}/obj

5. /usr/obj/${.CURDIR}

6. ${.CURDIR}

Ekspansi variabel dilakukan pada nilai sebelum digunakan, jadi
ekspresi seperti
${.CURDIR:S,^/ usr / src,/var/obj,}
dapat digunakan. Ini sangat berguna dengan 'MAKEOBJDIR'.

'.OBJDIR' dapat dimodifikasi di makefile melalui target khusus '.OBJDIR'.
Dalam semua kasus, membuat akan chdir(2) ke direktori yang ditentukan jika ada,
dan atur '.OBJDIR' dan 'PWD' ke direktori itu sebelum mengeksekusi target apa pun.

.PARSEDIR Jalur ke direktori saat ini 'Makefile' sedang diurai.

.PARSEFILE Nama dasar saat ini 'Makefile' sedang diurai. Variabel ini dan
'.PARSEDIR' keduanya disetel hanya sementara 'Makefile' sedang diurai. Jika
Anda ingin mempertahankan nilainya saat ini, tetapkan ke variabel menggunakan
tugas dengan ekspansi: (':=').

.JALUR Sebuah variabel yang mewakili daftar direktori yang membuat akan mencari
untuk file. Daftar pencarian harus diperbarui menggunakan target '.JALUR'
daripada variabel.

PWD Jalur alternatif ke direktori saat ini. membuat biasanya set '.CURDIR' ke
jalur kanonik yang diberikan oleh dapatkan cwd(3). Namun, jika variabel lingkungan
'PWD' disetel dan memberikan jalur ke direktori saat ini, lalu membuat set
'.CURDIR' dengan nilai 'PWD' sebagai gantinya. Perilaku ini dinonaktifkan jika
'MAKEOBJDIRPREFIX' disetel atau 'MAKEOBJDIR' berisi transformasi variabel.
'PWD' disetel ke nilai '.OBJDIR' untuk semua program yang membuat
mengeksekusi.

.TARGETS Daftar target yang ditentukan secara eksplisit pada baris perintah, jika ada.

VPATH Daftar direktori yang dipisahkan titik dua (“:”) yang membuat akan mencari file.
Variabel ini didukung untuk kompatibilitas dengan program make lama saja, gunakan
'.JALUR' sebagai gantinya.

Variabel pengubah
Perluasan variabel dapat dimodifikasi untuk memilih atau memodifikasi setiap kata dari variabel (di mana a
"word" adalah urutan karakter yang dibatasi spasi). Format umum dari sebuah variabel
ekspansi adalah sebagai berikut:

${variabel[:pengubah[:...]]}

Setiap pengubah dimulai dengan titik dua, yang dapat diloloskan dengan garis miring terbalik ('\').

Satu set pengubah dapat ditentukan melalui variabel, sebagai berikut:

modifier_variable=pengubah[:...]
${variabel:${modifier_variable}[:...]}

Dalam hal ini pengubah pertama di modifier_variable tidak dimulai dengan titik dua, karena
yang harus muncul dalam variabel referensi. Jika salah satu pengubah di
modifier_variable berisi tanda dolar ('$'), ini harus digandakan untuk menghindari lebih awal
ekspansi.

Pengubah yang didukung adalah:

:E Mengganti setiap kata dalam variabel dengan akhirannya.

:H Mengganti setiap kata dalam variabel dengan segalanya kecuali komponen terakhir.

:Mbelt hold
Pilih hanya kata-kata yang cocok belt hold. Karakter wildcard shell standar
('*', '?', dan '[]') dapat digunakan. Karakter wildcard dapat diloloskan dengan
garis miring terbalik ('\'). Sebagai konsekuensi dari cara nilai-nilai dipecah menjadi kata-kata, dicocokkan, dan
kemudian bergabung, sebuah konstruksi seperti
${VAR:M*}
akan menormalkan jarak antar-kata, menghapus semua spasi awal dan akhir, dan
mengubah beberapa spasi berurutan menjadi spasi tunggal.

:Nbelt hold
Ini identik dengan ':M', tetapi memilih semua kata yang tidak cocok belt hold.

:O Urutkan setiap kata dalam variabel menurut abjad. Untuk mengurutkan kata dalam urutan terbalik gunakan
':O:[-1..1]' kombinasi pengubah.

:Sapi Acak kata-kata dalam variabel. Hasilnya akan berbeda setiap kali Anda merujuk
ke variabel yang dimodifikasi; gunakan penugasan dengan ekspansi (':=') untuk mencegahnya
perilaku. Sebagai contoh,

DAFTAR= uno due tre quattro
RANDOM_LIST= ${LIST:Sapi}
STATIC_RANDOM_LIST:= ${LIST:Sapi}

semua:
@echo "${RANDOM_LIST}"
@echo "${RANDOM_LIST}"
@echo "${STATIC_RANDOM_LIST}"
@echo "${STATIC_RANDOM_LIST}"
dapat menghasilkan output yang mirip dengan:

quattro karena tre uno
tiga karena quattro uno
karena uno quattro tre
karena uno quattro tre

:Q Mengutip setiap karakter meta shell dalam variabel, sehingga dapat dilewati dengan aman
melalui pemanggilan rekursif dari membuat.

:R Menggantikan setiap kata dalam variabel dengan segalanya kecuali sufiksnya.

: waktu luang
Nilainya adalah format string untuk waktu luang(3), menggunakan arus waktu malam(3).

: hash
Hitung hash 32bit dari nilai dan encode sebagai digit hex.

:waktu lokal
Nilainya adalah format string untuk waktu luang(3), menggunakan arus waktu lokal(3).

: tA Mencoba mengonversi variabel ke jalur absolut menggunakan jalan nyata(3), jika gagal,
nilainya tidak berubah.

: tl Mengubah variabel menjadi huruf kecil.

:tsc
Kata-kata dalam variabel biasanya dipisahkan oleh spasi pada ekspansi. Pengubah ini
mengatur pemisah ke karakter c. Jika c dihilangkan, maka tidak ada pemisah yang digunakan.
Pelarian umum (termasuk kode numerik oktal), berfungsi seperti yang diharapkan.

: tu Mengubah variabel menjadi huruf besar.

:tW Menyebabkan nilai diperlakukan sebagai satu kata (mungkin mengandung warna putih yang disematkan
ruang angkasa). Lihat juga ':[*]'.

: dua Menyebabkan nilai diperlakukan sebagai urutan kata yang dibatasi oleh spasi putih. Lihat
juga ':[@]'.

:S/string_lama/string_baru/[1gW]
Ubah kemunculan pertama dari string_lama dalam nilai variabel, menggantinya dengan
string_baru. Jika 'g' ditambahkan ke garis miring terakhir dari pola, semua kemunculan di
setiap kata diganti. Jika '1' ditambahkan ke garis miring terakhir dari pola, hanya
kata pertama terpengaruh. Jika 'W' ditambahkan ke garis miring terakhir dari pola,
maka nilainya diperlakukan sebagai satu kata (mungkin berisi spasi putih yang disematkan).
If string_lama dimulai dengan tanda sisipan ('^'), string_lama berlabuh di awal
setiap kata. Jika string_lama diakhiri dengan tanda dolar ('$'), itu berlabuh di akhir
setiap kata. Dalam string_baru, tanda ampersand ('&') diganti dengan string_lama (tanpa
sembarang '^' atau '$'). Setiap karakter dapat digunakan sebagai pembatas untuk bagian-bagian dari
string pengubah. Karakter penahan, ampersand, dan pembatas dapat diloloskan dengan
garis miring terbalik ('\').

Ekspansi variabel terjadi dengan cara normal di dalam keduanya string_lama dan string_baru
dengan satu pengecualian bahwa garis miring terbalik digunakan untuk mencegah perluasan satu dolar
tanda ('$'), bukan tanda dolar sebelumnya seperti biasanya.

:C/belt hold/penggantian/[1gW]
:C pengubah seperti :S pengubah kecuali string lama dan baru,
alih-alih menjadi string sederhana, adalah ekspresi reguler yang diperluas (lihat regex(3))
string belt hold dan ed(1) gaya string penggantian. Biasanya, kejadian pertama
dari pola belt hold di setiap kata nilainya diganti dengan penggantian. itu
Pengubah '1' menyebabkan substitusi berlaku untuk paling banyak satu kata; pengubah 'g'
menyebabkan substitusi diterapkan ke banyak contoh pola pencarian belt hold as
terjadi dalam kata atau kata-kata itu ditemukan di; pengubah 'W' menyebabkan nilainya menjadi
diperlakukan sebagai satu kata (mungkin berisi ruang putih yang disematkan). Perhatikan bahwa '1' dan
'g' adalah ortogonal; yang pertama menentukan apakah beberapa kata berpotensi
terpengaruh, yang terakhir apakah beberapa substitusi berpotensi terjadi dalam masing-masing
kata yang terpengaruh.

Adapun :S pengubah, belt hold dan penggantian mengalami ekspansi variabel
sebelum diuraikan sebagai ekspresi reguler.

:T Mengganti setiap kata dalam variabel dengan komponen terakhirnya.

:u Hapus kata duplikat yang berdekatan (seperti unik(1)).

:?string_benar:string_palsu
Jika nama variabel (bukan nilainya), saat diuraikan sebagai ekspresi kondisional .if,
mengevaluasi ke true, kembali sebagai nilainya the string_benar, jika tidak, kembalikan
string_palsu. Karena nama variabel digunakan sebagai ekspresi, :? harus menjadi yang pertama
pengubah setelah nama variabel itu sendiri - yang tentu saja akan berisi
ekspansi variabel. Kesalahan umum adalah mencoba menggunakan ekspresi seperti
${NUMBER:M42:?match:no}
yang benar-benar menguji yang ditentukan (NUMBER), untuk menentukan apakah ada kata yang cocok dengan "42" yang Anda perlukan
gunakan sesuatu seperti:
${"${NUMBER:M42}" != "":?match:no}.

:string_lama=string_baru
Ini adalah substitusi variabel gaya AT&T System V UNIX. Itu pasti yang terakhir
pengubah ditentukan. Jika string_lama or string_baru tidak mengandung pencocokan pola
karakter % maka diasumsikan bahwa mereka berlabuh di akhir setiap kata, jadi hanya
akhiran atau seluruh kata dapat diganti. Jika tidak % adalah substring dari string_lama
untuk diganti di string_baru.

Ekspansi variabel terjadi dengan cara normal di dalam keduanya string_lama dan string_baru
dengan satu pengecualian bahwa garis miring terbalik digunakan untuk mencegah perluasan satu dolar
tanda ('$'), bukan tanda dolar sebelumnya seperti biasanya.

:@suhu@string@
Ini adalah mekanisme ekspansi loop dari OSF Development Environment (ODE) buat.
Berbeda .untuk ekspansi loop terjadi pada saat referensi. Menetapkan suhu untuk setiap kata
dalam variabel dan evaluasi string. Konvensi ODE adalah bahwa suhu harus dimulai dan
diakhiri dengan tanda titik. Sebagai contoh.
${LINKS:@.LINK.@${LN} ${TARGET} ${.LINK.}@}

Namun variabel karakter tunggal seringkali lebih mudah dibaca:
${MAKE_PRINT_VAR_ON_ERROR:@v@$v='${$v}'${.newline}@}

:Ubaru
Jika variabel tidak terdefinisi baru adalah nilai. Jika variabel didefinisikan,
nilai yang ada dikembalikan. Ini adalah fitur pembuatan ODE lainnya. Ini berguna untuk pengaturan
CFLAGS per-target misalnya:
${_${.TARGET:T}_CFLAGS:U${DEF_CFLAGS}}
Jika nilai hanya diperlukan jika variabel tidak ditentukan, gunakan:
${VAR:D:Ubaru}

:Dbaru
Jika variabel didefinisikan baru adalah nilai.

:L Nama variabelnya adalah nilainya.

:P Jalur node yang memiliki nama yang sama dengan variabel adalah nilainya. Jika tidak seperti itu
node ada atau jalurnya nol, maka nama variabel digunakan. agar
pengubah ini berfungsi, nama (simpul) setidaknya harus muncul di rhs a
ketergantungan.

:!cmd!
Keluaran dari lari cmd adalah nilai.

:NS Jika variabel tidak kosong, itu dijalankan sebagai perintah dan output menjadi yang baru
nilai.

::=str
Variabel diberi nilai str setelah substitusi. Pengubah ini dan nya
variasi berguna dalam situasi yang tidak jelas seperti ingin menetapkan variabel ketika
perintah shell sedang diurai. Pengubah penugasan ini selalu berkembang menjadi nol,
jadi jika muncul di baris aturan sendiri harus didahului dengan sesuatu yang harus dijaga
membuat bahagia.

'The::' membantu menghindari kecocokan palsu dengan gaya AT&T System V UNIX := pengubah dan
karena substitusi selalu terjadi ::= bentuk yang samar-samar sesuai.

::?=str
Untuk ::= tetapi hanya jika variabel tersebut belum memiliki nilai.

::+=str
Menambahkan str ke variabel.

::!=cmd
Tentukan keluaran dari cmd ke variabel.

:[jarak]
Memilih satu atau lebih kata dari nilai, atau melakukan operasi lain yang terkait dengan
cara di mana nilai dibagi menjadi kata-kata.

Biasanya, nilai diperlakukan sebagai urutan kata yang dibatasi oleh spasi. Beberapa
pengubah menekan perilaku ini, menyebabkan nilai diperlakukan sebagai satu kata
(mungkin berisi ruang putih yang disematkan). Nilai kosong, atau nilai yang terdiri
seluruhnya dari ruang putih, diperlakukan sebagai satu kata. Untuk keperluan ':[]'
pengubah, kata-kata diindeks kedua ke depan menggunakan bilangan bulat positif (di mana indeks 1
mewakili kata pertama), dan mundur menggunakan bilangan bulat negatif (di mana indeks -1
mewakili kata terakhir).

jarak dikenai ekspansi variabel, dan hasil yang diperluas kemudian
ditafsirkan sebagai berikut:

indeks Memilih satu kata dari nilai.

awal..akhir
Pilih semua kata dari awal untuk akhir, inklusif. Sebagai contoh, ':[2..-1]' memilih
semua kata dari kata kedua hingga kata terakhir. Jika awal lebih besar dari akhir,
maka kata-kata tersebut dikeluarkan dalam urutan terbalik. Sebagai contoh, ':[-1..1]' pilih semua
kata-kata dari yang terakhir ke yang pertama.

* Menyebabkan pengubah berikutnya memperlakukan nilai sebagai satu kata (mungkin
berisi ruang putih tertanam). Analog dengan efek "$*" di Bourne
kulit.

0 Berarti sama dengan ':[*]'.

@ Menyebabkan pengubah berikutnya memperlakukan nilai sebagai urutan kata yang dibatasi
oleh spasi putih. Analog dengan efek "$@" di Bourne shell.

# Mengembalikan jumlah kata dalam nilai.

TERMASUK PERNYATAAN, PERSYARATAN DAN UNTUK LOOP


Penyertaan makefile, struktur bersyarat dan untuk loop yang mengingatkan pada pemrograman C
bahasa disediakan di membuat. Semua struktur tersebut diidentifikasi dengan garis yang dimulai dengan
karakter titik tunggal ('.'). File disertakan dengan .termasukfillet⟩ atau .termasuk
"fillet". Variabel antara kurung sudut atau tanda kutip ganda diperluas untuk membentuk file
nama. Jika kurung sudut digunakan, makefile yang disertakan diharapkan ada di sistem
direktori makefile. Jika tanda kutip ganda digunakan, termasuk direktori makefile dan any
direktori yang ditentukan menggunakan -I opsi dicari sebelum direktori sistem makefile.
Untuk kompatibilitas dengan versi lain dari membuat 'sertakan file ...' juga diterima.

Jika pernyataan include ditulis sebagai .-termasuk atau sebagai .termasuk kemudian kesalahan menemukan dan/atau
pembukaan termasuk file diabaikan.

Jika pernyataan include ditulis sebagai .termasuk tidak hanya kesalahan menemukan dan/atau membuka
sertakan file yang diabaikan, tetapi dependensi basi dalam file yang disertakan akan diabaikan saja
'like' .BUAT.DEPENDFILE.

Ekspresi kondisional juga didahului oleh satu titik sebagai karakter pertama dari sebuah baris.
Kemungkinan kondisional adalah sebagai berikut:

.kesalahan pesan
Pesan dicetak bersama dengan nama makefile dan nomor baris, lalu
membuat akan keluar.

.ekspor variabel ...
Ekspor variabel global yang ditentukan. Jika tidak ada daftar variabel yang disediakan, semua global
diekspor kecuali untuk variabel internal (yang dimulai dengan '.'). Ini bukan
dipengaruhi oleh -X bendera, jadi harus digunakan dengan hati-hati. Untuk kompatibilitas dengan
lain membuat program 'variabel ekspor = nilai' juga diterima.

Menambahkan nama variabel ke .BUAT.EKSPOR setara dengan mengekspor variabel.

.ekspor-env variabel ...
Sama seperti '.export', kecuali variabelnya tidak ditambahkan ke .BUAT.EKSPOR.
Ini memungkinkan mengekspor nilai ke lingkungan yang berbeda dari yang digunakan
by membuat secara internal.

.ekspor-literal variabel ...
Sama seperti '.export-env', kecuali variabel dalam nilai tidak diperluas.

Info. pesan
Pesan dicetak bersama dengan nama makefile dan nomor baris.

.undef variabel
Batalkan definisi variabel global yang ditentukan. Hanya variabel global yang tidak dapat ditentukan.

.unekspor variabel ...
Kebalikan dari '.ekspor'. global yang ditentukan variabel akan dihapus dari
.BUAT.EKSPOR. Jika tidak ada daftar variabel yang disediakan, semua global tidak diekspor, dan
.BUAT.EKSPOR dihapus.

.unexport-env
Batalkan ekspor semua global yang sebelumnya diekspor dan hapus lingkungan yang diwarisi dari
orang tua. Operasi ini akan menyebabkan kebocoran memori dari lingkungan asli, jadi
harus digunakan hemat. Menguji untuk .BUAT.LEVEL menjadi 0, akan masuk akal. Juga
perhatikan bahwa variabel apa pun yang berasal dari lingkungan induk harus
secara eksplisit diawetkan jika diinginkan. Sebagai contoh:

.jika ${.MAKE.LEVEL} == 0
JALUR := ${JALAN}
.unexport-env
.ekspor PATH
.berakhir jika

Akan menghasilkan lingkungan yang hanya berisi 'PATH', yang merupakan kegunaan minimal
lingkungan. Sebenarnya '.MAKE.LEVEL' juga akan didorong ke lingkungan baru.

.peringatan pesan
Pesan diawali dengan 'peringatan:' dicetak bersama dengan nama makefile
dan nomor baris.

.jika [!]ekspresi [operator ekspresi ...]
Uji nilai ekspresi.

.ifdef [!]variabel [operator variabel ...]
Uji nilai variabel.

.ifndef [!]variabel [operator variabel ...]
Uji nilai variabel.

.ifmake [!]target [operator target ...]
Uji target yang sedang dibangun.

.ifnmake [!] target [operator target ...]
Uji target yang sedang dibangun.

.lain Membalikkan pengertian kondisional terakhir.

.elif [!] ekspresi [operator ekspresi ...]
Kombinasi dari '.lain' diikuti oleh '.jika'.

.elifdef [!]variabel [operator variabel ...]
Kombinasi dari '.lain' diikuti oleh '.ifdef'.

.elifndef [!]variabel [operator variabel ...]
Kombinasi dari '.lain' diikuti oleh '.ifndef'.

.elifmake [!]target [operator target ...]
Kombinasi dari '.lain' diikuti oleh '.ifmake'.

.elifnmake [!]target [operator target ...]
Kombinasi dari '.lain' diikuti oleh '.ifnmake'.

.berakhir jika Akhiri tubuh bersyarat.

operator mungkin salah satu dari berikut ini:

|| logis ATAU.

&& logis DAN; diprioritaskan lebih tinggi dari "||".

Seperti di C, membuat hanya akan mengevaluasi suatu kondisi sejauh diperlukan untuk menentukan
nilai. Tanda kurung dapat digunakan untuk mengubah urutan evaluasi. operator boolean '!'
dapat digunakan untuk secara logis meniadakan seluruh kondisional. Ini adalah prioritas yang lebih tinggi daripada
'&&'.

Nilai dari ekspresi mungkin salah satu dari berikut ini:

didefinisikan Mengambil nama variabel sebagai argumen dan mengevaluasi ke true jika variabel telah
didefinisikan.

membuat Mengambil nama target sebagai argumen dan mengevaluasi ke true jika targetnya
ditentukan sebagai bagian dari membuatbaris perintah atau dinyatakan sebagai target default
(baik secara implisit atau eksplisit, lihat .UTAMA) sebelum baris yang mengandung
bersyarat.

kosong Mengambil variabel, dengan kemungkinan pengubah, dan mengevaluasi ke true jika ekspansi
variabel akan menghasilkan string kosong.

ada Mengambil nama file sebagai argumen dan mengevaluasi ke true jika file tersebut ada. NS
file dicari di jalur pencarian sistem (lihat .JALUR).

target Mengambil nama target sebagai argumen dan mengevaluasi ke true jika target telah
didefinisikan.

perintah
Mengambil nama target sebagai argumen dan mengevaluasi ke true jika target telah
didefinisikan dan memiliki perintah yang terkait dengannya.

Ekspresi mungkin juga merupakan perbandingan aritmatika atau string. Ekspansi variabel dilakukan
di kedua sisi perbandingan, setelah itu nilai integral dibandingkan. Sebuah nilai adalah
diartikan sebagai heksadesimal jika didahului dengan 0x, selain itu desimal; bilangan oktal
tidak didukung. Operator relasional C standar semuanya didukung. Jika setelah
ekspansi variabel, baik sisi kiri atau kanan dari '==' atau '!=' operator bukan
nilai integral, kemudian dilakukan perbandingan string antar variabel yang diperluas. Jika tidak
operator relasional diberikan, diasumsikan bahwa variabel yang diperluas sedang dibandingkan
terhadap 0 atau string kosong dalam kasus perbandingan string.

Ketika membuat sedang mengevaluasi salah satu ekspresi bersyarat ini, dan menemukan (putih-
dipisahkan spasi) kata yang tidak dikenalinya, baik ekspresi "buat" atau "didefinisikan" adalah
diterapkan padanya, tergantung pada bentuk kondisional. Jika bentuknya adalah '.ifdef',
'.ifndef', atau '.jika' ekspresi "didefinisikan" diterapkan. Demikian pula, jika bentuknya adalah
'.ifmake' atau '.ifnmake, itu' ekspresi "membuat" diterapkan.

Jika conditional bernilai true, penguraian makefile berlanjut seperti sebelumnya. Jika
bernilai false, baris berikut dilewati. Dalam kedua kasus ini berlanjut sampai a
'.lain' atau '.berakhir jika' ditemukan.

Untuk loop biasanya digunakan untuk menerapkan seperangkat aturan ke daftar file. Sintaks dari a
untuk loop adalah:

.untuk variabel [variabel ...] in ekspresi
membuat-aturan⟩
.endfor

Setelah untuk ekspresi dievaluasi, itu dibagi menjadi kata-kata. Pada setiap iterasi dari
loop, satu kata diambil dan ditugaskan untuk masing-masing variabel, berurutan, dan ini variabel adalah
diganti menjadi membuat-aturan di dalam badan perulangan for. Jumlah kata harus
keluar bahkan; yaitu, jika ada tiga variabel iterasi, jumlah kata yang disediakan
harus kelipatan tiga.

KOMENTAR


Komentar dimulai dengan karakter hash ('#'), di mana saja kecuali di baris perintah shell, dan
lanjutkan ke akhir baris baru yang tidak dapat dilewati.

KHUSUS SUMBER (ATTRIBUT)


.EXEC Target tidak pernah ketinggalan zaman, tetapi selalu jalankan perintah.

.MENGABAIKAN Abaikan kesalahan apa pun dari perintah yang terkait dengan target ini, persis seperti jika
semuanya didahului oleh tanda hubung ('-').

.DIBUAT Tandai semua sumber target ini sebagai yang terbaru.

.MEMBUAT Jalankan perintah yang terkait dengan target ini bahkan jika -n or -t pilihannya adalah
ditentukan. Biasanya digunakan untuk menandai rekursif membuats.

.META Buat file meta untuk target, meskipun ditandai sebagai .PALSU, .MEMBUAT, atau
.SPESIAL. Penggunaan bersama dengan .MEMBUAT adalah kasus yang paling mungkin. dalam "meta"
mode, target kedaluwarsa jika file meta hilang.

.NOMETA Jangan membuat file meta untuk target. File meta juga tidak dibuat untuk
.PALSU, .MEMBUAT, atau .SPESIAL target.

.NOMETA_CMP
Abaikan perbedaan perintah saat memutuskan apakah target sudah kedaluwarsa. Ini adalah
berguna jika perintah berisi nilai yang selalu berubah. Jika jumlah
perintah berubah, meskipun, target akan tetap ketinggalan zaman. Efek yang sama
berlaku untuk setiap baris perintah yang menggunakan variabel .ODATE, yang bisa digunakan untuk
tujuan itu bahkan ketika tidak diperlukan atau diinginkan:

lewati-bandingkan-untuk-beberapa:
@echo ini akan dibandingkan
@echo ini tidak akan ${.OODATE:M.NOMETA_CMP}
@echo ini juga akan dibandingkan

:M pattern menekan ekspansi variabel yang tidak diinginkan.

.NOPATH Jangan mencari target di direktori yang ditentukan oleh .JALUR.

.TIDAK Biasanya membuat memilih target pertama yang ditemuinya sebagai target default
dibangun jika tidak ada target yang ditentukan. Sumber ini mencegah target ini menjadi
terpilih.

.OPSIONAL
Jika target ditandai dengan atribut ini dan membuat tidak tahu cara membuat
itu, itu akan mengabaikan fakta ini dan menganggap file tidak diperlukan atau sudah ada.

.PALSU Target tidak sesuai dengan file yang sebenarnya; itu selalu dianggap
kedaluwarsa, dan tidak akan dibuat dengan -t pilihan. Transformasi akhiran
aturan tidak diterapkan untuk .PALSU target.

.BERHARGA
Ketika membuat terganggu, biasanya menghilangkan target yang dibuat sebagian. Ini
sumber mencegah target dihapus.

.REKURSIF
Sinonim untuk .MEMBUAT.

.DIAM Jangan menggemakan perintah apa pun yang terkait dengan target ini, persis seolah-olah itu
semua didahului oleh tanda at ('@').

.MENGGUNAKAN Ubah target menjadi membuatversi makro. Ketika target digunakan sebagai
sumber untuk target lain, target lain memperoleh perintah, sumber, dan
atribut (kecuali untuk .MENGGUNAKAN) dari sumbernya. Jika target sudah memiliki perintah,
itu .MENGGUNAKAN perintah target ditambahkan ke mereka.

.GUNAKAN SEBELUMNYA
Tepat seperti .MENGGUNAKAN, tapi tambahkan .GUNAKAN SEBELUMNYA perintah target ke target.

.TUNGGU If .TUNGGU muncul di garis ketergantungan, sumber yang mendahuluinya dibuat sebelumnya
sumber yang berhasil di baris. Karena tanggungan file tidak
dibuat sampai file itu sendiri dapat dibuat, ini juga menghentikan tanggungan menjadi
dibangun kecuali mereka diperlukan untuk cabang lain dari pohon ketergantungan. Jadi diberikan:

x: a .TUNGGU b
gema x
a:
gema
b: b1
gema b
b1:
gema b1

outputnya selalu 'a', 'b1', 'b', 'x'.
Perintah yang dikenakan oleh .TUNGGU hanya relevan untuk merek paralel.

KHUSUS SASARAN


Target khusus tidak boleh disertakan dengan target lain, yaitu harus menjadi satu-satunya target
ditentukan.

.MULAI Setiap baris perintah yang dilampirkan ke target ini dieksekusi sebelum yang lainnya
dilakukan.

.BAWAAN
Ini semacam .MENGGUNAKAN aturan untuk target apa pun (yang digunakan hanya sebagai sumber) yang
membuat tidak dapat menemukan cara lain untuk membuat. Hanya skrip shell yang digunakan.
.IMPSRC variabel target yang mewarisi .BAWAAN's perintah diatur ke
nama target sendiri.

.AKHIR Setiap baris perintah yang dilampirkan ke target ini dieksekusi setelah yang lainnya
dilakukan.

.KESALAHAN Setiap baris perintah yang dilampirkan ke target ini dieksekusi ketika target lain gagal.
.ERROR_TARGET variabel diatur ke target yang gagal. Lihat juga
BUAT_PRINT_VAR_ON_ERROR.

.MENGABAIKAN Tandai setiap sumber dengan .MENGABAIKAN atribut. Jika tidak ada sumber yang ditentukan,
ini setara dengan menentukan -i .

.MENGGANGGU
If membuat terganggu, perintah untuk target ini akan dieksekusi.

.UTAMA Jika tidak ada target yang ditentukan kapan membuat dipanggil, target ini akan dibangun.

.BUAT BENDERA
Target ini menyediakan cara untuk menentukan bendera untuk membuat ketika makefile digunakan.
Bendera-bendera itu seolah-olah diketik di cangkang, meskipun -f pilihan tidak akan berpengaruh.

.NOPATH Terapkan .NOPATH atribut ke sumber tertentu.

.TIDAK PARALEL
Nonaktifkan mode paralel.

.TIDAK_PARALLEL
Sinonim untuk .TIDAK PARALEL, untuk kompatibilitas dengan varian pmake lainnya.

.OBJDIR Sumbernya adalah nilai baru untuk '.OBJDIR'. Jika itu ada, membuat akan chdir(2) untuk itu
dan perbarui nilai '.OBJDIR'.

.MEMESAN Target yang disebutkan dibuat secara berurutan. Pemesanan ini tidak menambahkan target ke
daftar target yang akan dibuat. Karena tanggungan target tidak dibangun
sampai target itu sendiri dapat dibangun, kecuali 'a' dibangun oleh bagian lain dari
grafik ketergantungan, berikut ini adalah loop ketergantungan:

.ORDER: ba
b: untuk

Perintah yang dikenakan oleh .MEMESAN hanya relevan untuk merek paralel.

.JALUR Sumber adalah direktori yang akan dicari untuk file yang tidak ditemukan di
direktori saat ini. Jika tidak ada sumber yang ditentukan, apa pun yang ditentukan sebelumnya
direktori dihapus. Jika sumbernya adalah yang spesial .DOTLAS sasaran, maka
direktori kerja saat ini dicari terakhir.

.JALUR.akhiran
Seperti .JALUR tetapi hanya berlaku untuk file dengan akhiran tertentu. Akhiran must
sebelumnya telah dideklarasikan dengan .SUFIKS.

.PALSU Terapkan .PALSU atribut ke sumber tertentu.

.BERHARGA
Terapkan .BERHARGA atribut ke sumber tertentu. Jika tidak ada sumber
ditentukan, .BERHARGA atribut diterapkan ke setiap target dalam file.

.KERANG Setel cangkang itu membuat akan digunakan untuk menjalankan perintah. Sumbernya adalah sekumpulan
bidang=nilai pasang.

nama Ini adalah spesifikasi minimal, digunakan untuk memilih salah satu dari builtin
spesifikasi cangkang; sh, ksh, dan csh.

path Menentukan jalur ke shell.

hasErrCtl Menunjukkan apakah shell mendukung exit on error.

memeriksa Perintah untuk mengaktifkan pengecekan kesalahan.

mengabaikan Perintah untuk menonaktifkan pemeriksaan kesalahan.

gema Perintah untuk mengaktifkan echoing dari perintah yang dijalankan.

tenang Perintah untuk mematikan echoing dari perintah yang dijalankan.

menyaring Output untuk menyaring setelah mengeluarkan tenang memerintah. Hal ini biasanya
sama dengan tenang.

bendera kesalahan Bendera untuk melewati shell untuk mengaktifkan pemeriksaan kesalahan.

gemaBendera Bendera untuk melewati shell untuk mengaktifkan perintah yang bergema.

garis baru String literal untuk melewati Shell yang menghasilkan satu baris baru
karakter ketika digunakan di luar karakter kutipan apa pun.
Contoh:

.SHELL: nama=ksh path=/bin/ksh hasErrCtl=true \
centang="set -e" abaikan="set +e" \
echo="set -v" quiet="set +v" filter="set +v" \
echoFlag=v errFlag=e baris baru="'\n'"

.DIAM Terapkan .DIAM atribut ke sumber tertentu. Jika tidak ada sumber yang ditentukan,
itu .DIAM atribut diterapkan ke setiap perintah dalam file.

.BASI Target ini dijalankan ketika file ketergantungan berisi entri basi, memiliki .ALLSRC
setel ke nama file ketergantungan itu.

.SUFIKS
Setiap sumber menentukan akhiran untuk membuat. Jika tidak ada sumber yang ditentukan, apapun
sufiks yang ditentukan sebelumnya dihapus. Hal ini memungkinkan penciptaan sufiks-
aturan transformasi.

Contoh:

.SUFFIX: .o
.bersama:
cc -o ${.TARGET} -c ${.IMPSRC}

LINGKUNGAN


membuat menggunakan variabel lingkungan berikut, jika ada: MACHINE, MACHINE_ARCH,
MACHINE_MULTIARCH, MAKE, MAKEFLAGS, MAKEOBJDIR, MAKEOBJDIRPREFIX, MAKESYSPATH, PWD, dan
TMPDIR.

MAKEOBJDIRPREFIX dan MAKEOBJDIR hanya dapat diatur di lingkungan atau di baris perintah untuk
membuat dan bukan sebagai variabel makefile; lihat deskripsi '.OBJDIR' untuk lebih jelasnya.

Gunakan bmake online menggunakan layanan onworks.net


Server & Workstation Gratis

Unduh aplikasi Windows & Linux

  • 1
    Oh!
    Oh!
    Osu! adalah permainan ritme sederhana dengan sumur
    memikirkan kurva belajar untuk pemain
    dari semua tingkat keahlian. Salah satu yang hebat
    aspek Osu! apakah itu
    komunitas-dr...
    Unduh Osu!
  • 2
    LIBPNG: Pustaka referensi PNG
    LIBPNG: Pustaka referensi PNG
    Pustaka referensi untuk mendukung
    Format Grafik Jaringan Portabel (PNG).
    Pemirsa: Pengembang. Pemrograman
    Bahasa: C. Ini adalah aplikasi yang
    bisa juga...
    Unduh LIBPNG: pustaka referensi PNG
  • 3
    Detektor logam berdasarkan RP2040
    Detektor logam berdasarkan RP2040
    Berdasarkan papan Raspberry Pi Pico, ini
    detektor logam termasuk dalam pulsa
    kategori detektor logam induksi, dengan
    kelebihan dan kekurangan yang sudah diketahui.
    Rp...
    Unduh Detektor logam berdasarkan RP2040
  • 4
    Manajer PAC
    Manajer PAC
    PAC adalah pengganti Perl/GTK untuk
    SecureCRT/Putty/dll (linux
    ssh/telnet/... gui)... Ini menyediakan GUI
    untuk mengonfigurasi koneksi: pengguna,
    kata sandi, aturan EXPECT...
    Unduh Manajer PAC
  • 5
    GeoServer
    GeoServer
    GeoServer adalah perangkat lunak sumber terbuka
    server yang ditulis dalam Java yang memungkinkan pengguna
    untuk berbagi dan mengedit data geospasial.
    Dirancang untuk interoperabilitas, itu
    menerbitkan da...
    Unduh GeoServer.dll
  • 6
    Kunang-kunang III
    Kunang-kunang III
    Keuangan pribadi sumber terbuka dan gratis
    Pengelola. Fitur Firefly III a
    sistem pembukuan berpasangan. Kamu bisa
    cepat masuk dan atur
    transaksi saya...
    Unduh Firefly III
  • Lebih banyak lagi »

Perintah Linux

Ad