EnglishFrenchSpanyol

Ad


Favicon OnWorks

metaconfig - Dalam talian dalam Awan

Jalankan metaconfig dalam penyedia pengehosan percuma OnWorks melalui Ubuntu Online, Fedora Online, emulator dalam talian Windows atau emulator dalam talian MAC OS

Ini ialah arahan metaconfig yang boleh dijalankan dalam penyedia pengehosan percuma OnWorks menggunakan salah satu daripada berbilang stesen kerja dalam talian percuma kami seperti Ubuntu Online, Fedora Online, emulator dalam talian Windows atau emulator dalam talian MAC OS.

JADUAL:

NAMA


metaconfig - penjana skrip Konfigurasikan

SINOPSIS


metaconfig [ -dhkmostvwGMV ] [ -L dir ]

DESCRIPTION


Metaconfig ialah program yang menjana skrip Konfigurasikan. Jika anda tidak tahu apa a
Konfigurasikan skrip ialah, sila langkau ke TUTORIAL bahagian halaman manual ini. Jika anda mahu
penerangan penuh (formal) tentang cara penggunaan metaconfig dan unitnya, sila lihat di
RUJUKAN bahagian. Berikut adalah pengenalan dan rujukan pantas untuk yang berilmu
pengguna.

Metaconfig beroperasi dari set unit yang mentakrifkan semua yang metaconfig tahu tentang
mudah alih. Setiap unit adalah serba lengkap, dan tidak perlu didaftarkan di mana-mana
selain daripada dimasukkan ke dalam sama ada direktori U awam atau direktori U peribadi anda. Jika
pakej dist (yang metaconfig adalah sebahagian) dipasang dalam LIB, kemudian U awam
direktori ialah LIB/dist/mcon/U. Pada mesin ini, direktori LIB ialah /usr/share/dist. awak
direktori U peribadi, jika anda mempunyai satu, berada dalam direktori peringkat atas pakej anda.
Sebelum anda boleh berlari metaconfig anda mesti melakukan beberapa perkara:

· Buat fail .package dalam direktori peringkat atas pakej dengan menjalankan packinit.
Program ini akan bertanya kepada anda tentang pakej anda dan ingat apa yang anda beritahunya supaya
semua program dist boleh menjadi pintar.

· Rujuk Glosari (dalam LIB/dist/mcon) dan tulis skrip shell dan program C anda
dari segi simbol yang metaconfig tahu bagaimana untuk menentukan. Anda tidak perlu memberitahu
metaconfig simbol yang anda gunakan, kerana metaconfig akan memikirkannya untuk anda.

· Hasilkan sebarang skrip .SH yang diperlukan untuk menulis Makefiles atau skrip shell yang akan bergantung
pada nilai yang ditakrifkan oleh Konfigurasikan. Terdapat satu program yang dipanggil makeSH yang akan membantu anda
menukar skrip biasa kepada skrip. templat SH; beberapa penyuntingan masih perlu dilakukan
dilakukan pada fail .SH yang terhasil untuk memindahkan bahagian konfigurasi pembolehubah dalam
bahagian atas skrip (lihat ulasan sebaris yang dihasilkan oleh makeSH dalam .SH anda
fail).

· Buat fail MANIFEST.new dalam direktori peringkat teratas anda yang menyenaraikan semua fail dalam
pakej anda. Fail ini akan kekal peribadi dan tidak akan menjadi sebahagian daripada fail akhir
pengedaran. (Sebagai kemudahan, fail MANIFEST akan digunakan oleh metaconfig if
belum ada MANIFEST.fail baharu.) Nama fail hendaklah menjadi medan pertama pada setiap satu
barisan. Selepas beberapa ruang kosong anda boleh menambah ulasan ringkas yang menerangkan fail anda. Sahaja
fail sumber harus disenaraikan di sana. Fail khas patchlevel.h (iaitu
dikendalikan dan diselenggara oleh alat menampal -- lihat tepuk(1)) hendaklah menjadi sebahagian daripada
MANIFEST.fail baharu, tetapi mungkin diabaikan secara senyap oleh sesetengah alatan. Sebagai peraturan,
hanya fail yang diselenggara oleh RCS harus disenaraikan di sana, the patchlevel.h fail menjadi
satu pengecualian penting.

· Secara pilihan, anda mungkin ingin mencipta fail MANIFEST, yang akan menjadi versi yang dieksport
daripada MANIFEST.baru anda. Fail itu mesti dijadikan sebahagian daripada keluaran, iaitu disenaraikan dalam kedua-duanya
MANIFEST.baru dan MANIFEST anda sendiri. Salah satu daripada metaconfig unit tahu tentang ini
fail dan akan memaksa Konfigurasi untuk melakukan semakan keluaran, memastikan semua fail
disenaraikan terdapat sebahagian daripada pengedaran. Fail MANIFEST dan MANIFEST.new sepatutnya
jelas, bukan pautan.

· Salin mana-mana fail .U yang anda ingin ubah suai ke direktori U peribadi anda. Mana-mana fail .U
dalam direktori U peribadi anda akan digunakan sebagai keutamaan daripada direktori dalam U awam
direktori. Sebagai contoh, satu cara untuk memaksa kemasukan mana-mana unit adalah dengan menyalin End.U
fail ke direktori .U anda dan tambahkan nama unit yang anda inginkan sebagai pergantungan
penghujung baris ?MAKE:. Unit tertentu HANYA boleh dipaksa dengan cara ini, iaitu
yang dalam bentuk Warn_*.U dan Chk_*.U. Anda juga boleh menyesuaikan lalai tertentu
Konfigurasikan pembolehubah dengan menyalin Myinit.U ke direktori U peribadi pakej anda dan
menetapkan pembolehubah dalam unit itu.

Sekarang anda sudah bersedia untuk berlari metaconfig. Itu akan mewujudkan a Konfigurasi fail, dan secara pilihan a
config_h.SH fail (jika sumber anda menggunakan sebarang simbol C). Fail yang dihasilkan akan
ditambahkan secara automatik pada MANIFEST.new anda jika perlu. Jangan lupa untuk mengemas kini anda
fail MANIFEST sekalipun.

Untuk membuat unit baharu, lakukan perkara berikut:

· Salin unit yang serupa ke fail .U baharu. Nama yang anda pilih hendaklah nama a
pembolehubah yang dijana oleh unit, walaupun ini hanya kemudahan untuk anda, bukan a
keperluan. Ia mestilah 12 atau kurang aksara untuk mengelakkan pencincangan nama fail.
Sebenarnya, ia sepatutnya 10 atau kurang supaya mereka yang ingin menggunakan RCS boleh memiliki
a .U,v di hujung tanpa mencincang. Metaconfig menggunakan kes huruf pertama kepada
tentukan sama ada sebarang pembolehubah benar-benar dihasilkan oleh unit ini, jadi jangan gunakan huruf besar anda
nama unit jika ia sepatutnya menghasilkan pembolehubah shell.

· Edit fail .U baharu untuk melakukan perkara yang anda mahu. Baris pertama ?MAKE: menunjukkan
kebergantungan; sebelum senarai bertindih akhir semua pembolehubah yang ditakrifkan oleh unit ini, dan
selepas titik bertindih akhir semua pembolehubah (atau unit lain) yang bergantung kepada unit ini.
Adalah sangat penting bahawa senarai ini tepat. Jika kebergantungan adalah pilihan dan a
nilai lalai boleh digunakan, anda harus mengawal kebergantungan dengan tanda '+'. The
unit yang sepadan tidak akan dimuatkan untuk mengira simbol, melainkan benar-benar diperlukan
oleh unit lain.

· Setakat yang mungkin, parameterkan unit anda berdasarkan pembolehubah shell yang ditakrifkan pada
?INIT: garisan. Ini akan mengalihkan takrif pembolehubah ke unit Init.U, di mana
ia boleh digantikan dengan takrifan dalam Myinit.U, yang disertakan selepas Init.U.

· Tambah takrifan mana-mana simbol C yang dikehendaki sebagai ?H: baris. Baris yang bermula dengan
?H:?%<: dalam fail .U akan ditambah pada fail config.h akhirnya jika dan hanya jika
metaconfig memutuskan bahawa unit ini diperlukan. %< bermaksud nama unit,
yang kebetulan adalah nama fail juga (tanpa .U) jika anda mengikuti
konvensyen. Sentiasa letakkan ulasan pada setiap baris ?H: sekiranya salah satu pembolehubah
penggantian lebih awal pada baris memulakan ulasan tanpa menghabiskannya. Mana-mana cangkang
pembolehubah bermula dengan d_ boleh melakukan ini, jadi berhati-hatilah. Jika anda meninggalkan ?%<:, maka
metaconfig akan cuba intuit simbol yang definisinya diperlukan sebelum mana-mana
kemasukan dalam config.h.

· Tambah definisi glosari sebagai ?S: baris untuk pembolehubah shell dan ?C: baris untuk C
pembolehubah prapemproses. Lihat unit semasa untuk contoh. Ianya SANGAT penting untuk
mulakan setiap entri dengan nama simbol dibenarkan kiri, dan akhiri setiap entri dengan ?C:. atau
?S:. barisan. Algoritma yang menterjemah entri simbol prapemproses C untuk
Glosari ke dalam ulasan untuk config.h bergantung pada ini.

· Pastikan susunan semua ? baris betul. Urutan yang betul ialah:

?RCS: dan ?X: pada asasnya hanya komen
?BUAT: kebergantungan metaconfig
?Y: arahan susun atur unit
?S: definisi cangkang glosari
?C: definisi glosari C
?H: takrifan config.h
?M: takrifan confmagic.h
?W: simbol yang dikehendaki
?V: simbol yang boleh dilihat
?F: fail yang dicipta oleh unit ini
?T: simbol cengkerang sementara digunakan
?D: kebergantungan pilihan nilai lalai
?O: digunakan untuk menandakan unit usang
?LINT: petua metalint
?INIT: pemulaan simbol shell

Berikut ialah contoh untuk menunjukkan susunan baris dan pelbagai format yang dibenarkan:

?RCS: $RCS-Id$
?RCS: Maklumat hak cipta
?RCS: $RCS-Log$
?X:
?X: Contoh yang dibuat-buat
?X:
?BUAT:d_satu dua: tiga +empat Lima
?BUAT: -pilih tambah $@ %
?Y:LALAI
?S:d_one:
?S: Simbol cangkerang pertama, mentakrifkan SATU secara bersyarat.
?S:.
?S:dua:
?S: Simbol cangkerang kedua, nilai untuk DUA.
?S:.
?KON:
?C: Simbol C pertama.
?C:.
?C:DUA:
?C: Simbol C kedua.
?C:.
?H:#$d_one SATU /**/
?H:#define DUA "$two"
?H:#$d_one SATU_DUA "$two"
?H:.
?M:flip: HAS_FLIP
?M:#ifndef HAS_FLIP
?M:#define flip(x) flop(x)
?M:#endif
?M:.
?W:%<:satu_dua
?V:p_satu p_dua:p_tiga
?F:file ./ftest !tmp
?T:tmp var
?D:two='undef'
?LINT:tukar tiga
?INIT:two_init='2'
: kod shell yang melaksanakan unit berikut
p_one='one'
p_dua='dua'
p_tiga=""

Biar saya nyatakan sekali lagi: takrifan unit di atas ialah a palsu satu untuk hanya menunjukkan
kemungkinan yang berbeza. Unit sebegitu tidak berguna lagi... Beberapa lagi
ciri lanjutan tidak diterangkan di sini. Sila rujuk kepada RUJUKAN bahagian untuk lebih lanjut
maklumat lengkap.

· Letakkan unit ke dalam direktori U awam atau persendirian mengikut kesesuaian.

· Jalankan semula metaconfig.

· Hantar unit anda ke [e-mel dilindungi] (Raphael Manfredi) untuk dimasukkan ke dalam salinan induk,
jika anda fikir ia adalah kepentingan umum.

Untuk menambah program baharu untuk ditempatkan:

· Edit Loc.U, dan tambahkan nama program kedua-duanya pada baris ?MAKE: (antara
dua titik bertindih) dan sama ada loclist atau trylist (bergantung pada sama ada program itu
wajib atau tidak).

· Jalankan semula metaconfig.

· Hantar unit anda kepada saya untuk dimasukkan ke dalam salinan induk, jika anda fikir ia adalah umum
faedah.

Nota untuk menulis fail .U:

* Sentiasa gunakan "rm -f" kerana terdapat sistem di mana rm interaktif secara lalai.

* Jangan gunakan "set -- ..." kerana '--' tidak berfungsi dengan setiap shell. Gunakan "set x ...;
syif".

* Jangan gunakan "unset ENV" kerana unset tidak mudah alih sepenuhnya. Sebut "ENV=''" sebaliknya.

* Sentiasa gunakan gema " " (dengan ruang) kerana sistem Eunice.

* Hanya guna ujian dengan -r, -w, -f atau -d kerana itu adalah satu-satunya suis mudah alih. Dalam
khususnya, elakkan "ujian -x".

* Gunakan hanya program yang disertakan dengan V7, supaya anda tahu semua orang memilikinya.

* Gunakan $contains apabila anda ingin grep bersyarat, kerana tidak semua grep mengembalikan a
status munasabah. Pastikan anda mengubah hala keluaran ke /dev/null, dengan menggunakan '>/dev/null
2>&1'.

* Gunakan "jika ujian" dan bukannya "jika [...]" kerana tidak setiap sh mengetahui binaan yang terakhir.

* Gunakan skrip myread untuk input supaya mereka boleh melakukan shell escapes dan lalai
penilaian. Bentuk umum ialah

kes "$grimble" dalam
'') dflt=452;;
*) dflt="$grimble";;
bahawa C
rp='Berapa banyak grimble yang anda ada?'
. ./myread
grimble="$ans"

* Gunakan skrip getfile apabila meminta nama laluan fail untuk mempunyai pilihan
~pembesaran nama dan pemeriksaan kewarasan. Lihat unit Getfile.U untuk penerangan penuh.

* Sentiasa letakkan a

$startsh

di bahagian atas setiap skrip terjana yang akan dilancarkan atau diperolehi oleh
Konfigurasi.

* Jangan sekali-kali menganggap UNIX-isme biasa seperti fakta bahawa fail objek berakhir dengan a .o and
bahawa nama perpustakaan berakhir dengan .a. Menggunakan $_o and $_a pembolehubah sebaliknya (lihat
Unix.U).

* Apabila melakukan ujian compile-link-execute, sentiasa tulis seperti ini:

$cc $ccflags $ldflags cuba.c -o cuba $libs

kerana sesetengah sistem memerlukan bendera pemautan ditentukan sebelum dikompilasi
sasaran (dengan pengecualian mengekori perpustakaan menghubungkan).

* Keluarkan mesej penting pada deskriptor fail #4, dengan menggunakan '>&4' untuk mengubah hala output.
Hanya mesej tersebut akan muncul apabila -s suis diberikan kepada Konfigurasi pada
baris arahan (mod senyap).

* Sentiasa cuba tentukan sama ada ciri hadir dalam cara yang paling khusus--jangan
sebut "jika bsd" apabila anda boleh grep libc. Terdapat banyak sistem hibrid di luar sana, dan
setiap ciri harus berdiri atau jatuh dengan sendirinya.

* Sentiasa cuba tentukan sama ada ciri hadir dalam cara yang paling umum, supaya
pakej lain boleh guna unit anda.

* Apabila ragu-ragu, tetapkan lalai dan tanya. Jangan menganggap apa-apa.

* Jika anda fikir pengguna itu salah, benarkan fakta bahawa dia mungkin betul. Untuk
contohnya, dia boleh menjalankan Configure pada sistem yang berbeza daripada yang dia akan gunakan
produk akhir pada.

Metaconfig menyimpan nama berikut dalam direktori anda, dan jika anda menggunakan nama sedemikian, ia
mungkin terkedu atau mempunyai kesan lain yang tidak dijangka:

.MT/*
Konfigurasi
Dikehendaki
Sudah usang
mengkonfigurasi
config_h.SH
confmagic.h
U/*
MANIFEST.baru

Selain itu, Configure boleh memusnahkan nama-nama ini dalam direktori ia dijalankan:

UU/*
config.sh
config.h

PILIHAN


Pilihan berikut diiktiraf oleh metaconfig:

-d Hidupkan mod nyahpepijat. Tidak begitu berguna melainkan anda sedang menyahpepijat metaconfig
sendiri.

-h Cetak mesej bantuan dan keluar.

-k Simpan direktori sementara, supaya anda boleh memeriksa fail kerja yang digunakan oleh
metaconfig untuk membina anda Konfigurasi skrip. Berguna hanya apabila menyahpepijat
unit.

-m Anggap banyak memori dan tukar ruang. Ini akan mempercepatkan carian simbol masuk
sumber fail dengan jumlah masa yang besar, dengan mengorbankan memori
penggunaan...

-o Petakan simbol usang pada yang baharu. Gunakan suis ini jika anda masih ada
simbol usang dalam kod sumber anda dan tidak mahu (atau tidak boleh) dialih keluar
mereka buat masa ini. Simbol usang sebaliknya diabaikan, walaupun begitu
akan memberi anda amaran daripada metaconfig.

-s Hidupkan mod senyap.

-t Jejak simbol apabila ia ditemui.

-v Hidupkan mod verbose.

-w Andaikan fail Wanted adalah terkini. Ini akan melangkau masa dan ingatan
menggunakan fasa pengimbasan kod sumber, mencari simbol yang diketahui. gunakannya
hanya apabila anda tahu fail sumber anda tidak berubah berkenaan dengan
kolam daripada metaconfig simbol yang digunakan.

-G Juga menyediakan GNU mengkonfigurasi-seperti hujung hadapan kepada yang dihasilkan Konfigurasi
skrip, untuk dimasukkan dalam pengedaran juga. Ini hanya pembalut
sekitar Konfigurasi skrip secara semula jadi, tetapi ia membolehkan orang biasa dengan
Alat GNU agar tidak hilang apabila menghadapi pengedaran baharu.

-L dir Gantikan lokasi pustaka lalai. Biasanya hanya berguna untuk metaconfig
penyelenggara untuk menggunakan unit yang sedang dibangunkan secara tempatan dan bukannya
yang tersedia untuk umum. The dir dinyatakan ialah yang mengandungi unit
U direktori.

-M Benarkan pengeluaran a confmagic.h fail untuk memetakan semula beberapa baik secara automatik-
simbol yang diketahui kepada beberapa alternatif lain, seperti salinan() dipetakan semula
secara telus kepada memcpy() apabila tidak tersedia. Pilihan ini dihidupkan
secara automatik apabila a confmagic.h fail wujud dalam direktori peringkat atas.
Hanya alih keluar fail itu jika anda ingin melumpuhkan pilihan ini secara kekal.

-V Cetak nombor versi dan keluar.

TUTORIAL


Bahagian (panjang) ini adalah pengenalan kepada metaconfig, di mana kita akan mempelajari semua
asas. Jika anda sudah tahu cara menggunakannya metaconfig, anda boleh melangkau ke seterusnya dengan selamat
bawah seksyen ini.

Gambaran Keseluruhan
Biasanya apabila anda ingin mendapatkan beberapa pakej sumber untuk disusun pada platform tertentu yang anda miliki
untuk mengedit Makefile utama (dengan andaian ada satu!), pilih pengkompil C, pastikan anda
mempunyai perpustakaan yang sesuai, dan kemudian api membuat perintah. Jika pakej itu munasabah
ditulis dengan baik, ia akan menyusun (tanpa amaran menjadi pilihan :-). Dengan sendirinya, yang terakhir
ayat adalah prestasi sebenar, memandangkan kepelbagaian platform UNIX yang tersedia hari ini
dan kepelbagaian perisa, ini bermakna pengarang pakej telah mendalami
masalah untuk memikirkan pilihan yang betul memandangkan beberapa percubaan standard, meneka dan mengacaukan
sekitar dengan sistem termasuk dan jenis.

Namun, di sebalik semua bakatnya, penulis tidak mungkin mengetahui bahawa sesetengah sistem mempunyai a
panggilan sistem rosak, atau sesetengah struktur sistem tidak mempunyai satu medan standard, atau
hanya sama ada fail termasuk yang diberikan wujud atau tidak. Dan saya tidak mempertimbangkan yang tersirat
andaian, seperti jenis yang dikembalikan oleh malloc () fungsi atau kehadiran
menamakan semula () panggilan sistem untuk menamakan beberapa. Tetapi pengetahuan itu perlu untuk mencapai sebenar
kemudahalihan.

Sekarang janganlah kita menzalimi diri sendiri. Menggunakan maklumat itu memerlukan kemahiran yang lebih besar, namun ia boleh
membawa kepada lebih banyak atur cara mudah alih kerana ia kemudiannya ditulis dalam cara yang bebas sistem
dan hanya bergantung pada fakta bahawa beberapa andaian adalah benar atau salah pada sistem tertentu,
setiap andaian tidak berkaitan antara satu sama lain. Maksudnya, kami tidak berkata: Kami berada di a
Sistem BSD atau kami menggunakan sistem USG. Itu terlalu kabur pada masa kini. Tidak, kami mahu
katakan kepada kod sumber: sistem ini tidak mempunyai menamakan semula () panggilan sistem dan malloc ()
mengembalikan a (kosong *) nilai.

Metaconfig ialah alat yang membolehkan anda berbuat demikian, dengan faedah tambahan daripada tidak
perlu mengedit Makefile dengan tangan jika semuanya berjalan lancar. Dengan berlari metaconfig, anda membuat a
skrip shell bernama Konfigurasi. Banyak usaha telah ditumpukan kepada skrip Konfigurasikan
dalaman untuk memastikan ia akan berjalan pada 99% daripada cengkerang sedia ada yang tersedia setakat ini
menulis. Konfigurasi akan menyiasat sistem sasaran, bertanya soalan apabila ragu-ragu dan
kumpulkan semua jawapan dalam satu fail shell, yang seterusnya boleh digunakan untuk
menjana Makefiles yang dikonfigurasikan secara automatik dan C termasuk fail.

Hanya terdapat set simbol terhad (tetapi agak besar) yang tersedia untuk skrip shell anda
dan program C. Kesemuanya didokumenkan dalam fail Glosari. Apa yang perlu anda lakukan ialah belajar
tentangnya dan mula menggunakannya untuk menangani masalah mudah alih dan konfigurasi. Kemudian,
dengan berlari metaconfig, skrip Konfigurasikan yang sesuai akan dihasilkan untuk pakej anda.

Skrip Konfigurasikan dibina beberapa unit (lebih daripada 300), setiap unit adalah
bertanggungjawab untuk menentukan sebilangan kecil shell dan/atau simbol C. Unit dipasang
bersama-sama pada peringkat akhir, menghormati graf pergantungan (satu unit mungkin memerlukan hasilnya
daripada beberapa unit lain yang kemudiannya diletakkan sebelum dalam skrip).

Simbol
Simbol adalah perkara yang paling penting dalam metaconfig dunia. Mereka adalah yang terkecil
entiti yang diiktiraf, biasanya perkataan, dan boleh diberikan nilai pada akhir Konfigurasi
perlaksanaan. Sebagai contoh, simbol pra-pemproses C HAS_RENAME ialah metaconfig simbol itu
adalah dijamin untuk ditakrifkan jika, dan hanya jika, menamakan semula () panggilan sistem hadir. Begitu juga,
yang $ranlib pembolehubah shell akan ditetapkan kepada sama ada ':' atau 'ranlib' bergantung pada sama ada
panggilan ke ranlib program diperlukan untuk memesan fail perpustakaan. Cara ini tidak berfungsi
yang penting buat masa ini, apa yang penting ialah memahami bahawa simbol tersebut diberikan a kehidupan
(iaitu nilai) atas Konfigurasi pelaksanaan.

Menggunakan simbol adalah agak mudah. Dalam fail sumber C, anda hanya menggunakan simbol
nilai, sebagai arahan pra-pemproses (contohnya: #ifdef HAS_RENAME) atau, jika simbol
nilai ialah rentetan, secara langsung seperti yang anda gunakan makro dalam C. Dan dalam fail shell atau a
Makefile, anda boleh merujuk simbol shell secara langsung.

Sebenarnya, saya berbohong, kerana itu tidak sepenuhnya ajaib seperti perenggan sebelumnya
boleh berbunyi. Dalam fail C, anda perlu memasukkan Configure-produced config.h fail, dan
anda mesti membungkus skrip shell atau Makefile anda dalam fail .SH dan anda boleh merujuk shell
simbol hanya dalam bahagian penggantian berubah bagi fail .SH itu. Lebih lanjut mengenai ini kemudian.

Source Fail
Simbol hanya boleh muncul dalam set fail sumber yang terhad, kerana metaconfig hanya akan
imbasnya apabila mencari simbol yang diketahui, cuba memikirkan unit mana yang diperlukannya.
Anda boleh menggunakan simbol C dalam fail sumber C, iaitu fail dengan a .c, .h, .y or .l peluasan, dan
simbol shell hanya dicari dalam fail .SH.

Untuk mendapatkan nilai simbol, fail C perlu menyertakan khas config.h
fail, yang dihasilkan oleh Konfigurasi apabila simbol C hadir. Dan fail .SH dijalankan
melalui cangkerang, menghasilkan fail baharu. Walau bagaimanapun, di bahagian atas fail .SH, fail
khas config.sh fail (juga dihasilkan dengan menjalankan Konfigurasi) adalah bersumber, dan berubah-ubah
penggantian dikenakan. Sebenarnya, config.h dihasilkan dengan menjalankan metaconfig-produced
config_h.SH fail, sekali lagi menggunakan penggantian berubah. Jadi kita akan melihat a
sedikit lebih dekat kerana ini adalah jantung keseluruhan konfigurasi skim...

Pembolehubah Penggantian
Terdapat binaan shell dipanggil disini dokumen yang membolehkan arahan untuk mengambil input
dinyatakan dalam skrip itu sendiri. Input itu ditafsirkan oleh shell sebagai dua-
rentetan petikan atau rentetan petikan tunggal bergantung pada bentuk dokumen di sini
spesifikasi.

Untuk menentukan dokumen di sini, token '<<' digunakan, diikuti dengan pengecam tunggal. daripada
kemudian, baris skrip yang tinggal membentuk input untuk arahan, sehingga di sini
dokumen ditemui pada baris dengan sendirinya. Penggantian shell (termasuk pembolehubah shell
penggantian) dilakukan melainkan pengecam dikelilingi oleh petikan tunggal. Sebagai contoh:

var='first'
tar = 'kedua'
echo "--> dokumen pertama di sini:"
kucing <
var='$var'
tar='$tar'
EOM
echo "--> dokumen kedua di sini:"
kucing <<'EOM'
echo $var
echo $tar
EOM
echo "--> tamat."

akan menghasilkan, apabila dijalankan melalui shell:

--> pertama di sini dokumen:
var='first'
tar = 'kedua'
--> dokumen kedua di sini:
echo $var
echo $tar
--> tamat.

Dokumen pertama di sini mempunyai kandungannya ditafsirkan manakala yang kedua adalah keluaran seperti sedia ada.
Kedua-duanya berguna dalam skrip .SH, seperti yang akan kita lihat.

Menggunakan .SH skrip
Skrip .SH biasanya dihasilkan dengan menjalankan MakeSH skrip lain fail sedia ada,
berubah fail ke dalam fail.SH. Mari kita ambil satu contoh. Berikut adalah sedikit skrip
(mari kita sebut insize) yang mencetak satu mesej, saiz int jenis data dalam C.
Malangnya, ia mempunyai nilai yang tertanam di dalamnya, oleh itu:

#!/ Bin / sh
insize='4'
echo "Pada mesin ini, jenis int ialah $intsize bytes"

Jom lari makeSH padanya dengan menaip 'makeSH insize'. Kami mendapat satu insize.SH failkan itu
kelihatan seperti ini:

kes $CONFIG masuk
'')
jika ujian -f config.sh; maka TOP=.;
ujian elif -f ../config.sh; maka TOP=..;
ujian elif -f ../../config.sh; maka TOP=../ ..;
ujian elif -f ../../../config.sh; maka TOP=../../..;
ujian elif -f ../../../../config.sh; maka TOP=../../../..;
lagi
echo "Tidak dapat mencari config.sh."; keluar 1
fi
. $TOP/config.sh
;;
bahawa C
: Ini memaksa fail SH untuk mencipta sasaran dalam direktori yang sama seperti fail SH.
: Ini adalah supaya membuat bergantung sentiasa tahu di mana untuk mencari derivatif SH.
kes "$ 0" dalam
*/*) cd `expr X$0 : 'X\(.*\)/'` ;;
bahawa C
echo "Mengekstrak insize (dengan penggantian berubah-ubah)"
: Bahagian fail ini akan mempunyai penggantian pembolehubah dilakukan padanya.
: Alihkan apa sahaja yang memerlukan konfigurasi subs daripada !NO!SUBS! bahagian ke !GROK!INI!.
: Lindungi sebarang tanda dolar dan kutu belakang yang anda tidak mahu ditafsirkan
: dengan meletakkan garis miring ke belakang di hadapan. Anda boleh memadam komen ini.
$spitshell >insize <
$startsh
!GROK!INI!

: Dalam dolar berikut dan kutu belakang tidak memerlukan garis miring ke belakang tambahan.
$spitshell >>insize <<'!NO!SUBS!'
insize='4'
echo "Pada mesin ini, jenis int ialah $intsize bytes"
!NO!SUBS!
chmod 755 insize
$eunicefix insize

Bahagian pertama skrip ini (dalam kes pernyataan) sedang cuba mencari config.sh
fail, untuk mendapatkan sumbernya. The $CONFIG pembolehubah adalah palsu secara lalai, dengan benar apabila
config.sh telah diperolehi (yang akan berlaku jika fail ini dilaksanakan daripada
dalam Konfigurasi sendiri, tetapi jangan mengelirukan isu di sini).

Sebaik sahaja config.sh fail telah menjadi sumber, semua simbol shell ditakrifkan oleh Konfigurasi adalah
ditetapkan. Kami tahu mencapai pernyataan kes kedua, digunakan untuk menukar direktori semasa harus a
laluan digunakan untuk mencapai program ini (contohnya jika kita berkata 'sh ../scripts/intsize.SH', kami
akan lari dahulu'cd ../skrip' sebelum meneruskan). Jika anda tidak faham ini, jangan
bimbang mengenainya.

Ini datang perkara yang menarik. Skrip ini menggunakan $spitshell berubah-ubah, dan tidak
sesuatu yang kita tahu...belum. Jika anda melihat melalui fail Glosari, anda akan melihatnya
ini adalah pembolehubah yang diketahui oleh metaconfig. Jika anda menjadikan fail ini sebahagian daripada pengedaran anda
(dengan memasukkannya ke dalam fail MANIFEST.new, kami akan kembali kepadanya kemudian) dan jalankan
metaconfig, maka Konfigurasi skrip akan menentukan nilai yang sesuai untuk pembolehubah ini
dan ia akan ditetapkan config.sh. Perkara yang sama berlaku $startsh dan yang misteri $eunicefix at
tamat. Pada sistem yang munasabah, bahagian yang berkaitan daripada config.sh kelihatan seperti ini:

spitshell='kucing'
startsh='#!/ Bin / sh'
eunicefix=':'

Ah! Kami sampai ke sana. Sekarang ia kelihatan biasa. Kami sedang menghadapi single kucing perintah siapa
input datang daripada dokumen yang diinterpolasi pembolehubah di sini dan outputnya dialihkan ke
insize. Nilainya ialah daripada $startsh, iaitu '#!/ Bin / sh'. Baik setakat ini.

Kemudian kita mencapai pengembangan dokumen kedua di sini, untuk mendapatkan baki skrip. ini
masa, simbol dokumen di sini dikelilingi oleh petikan tunggal supaya kandungannya akan menjadi
ditambahkan kata kerja pada insize fail. Jadi, dengan berlari 'sh insize.SH', kami mendapat
keluaran berikut:

Mengeluarkan insize (dengan penggantian berubah-ubah)

dan dengan melihat fail insize yang dihasilkan, kita melihat:

#!/ Bin / sh
insize='4'
echo "Pada mesin ini, jenis int ialah $intsize bytes"

yang betul-betul apa yang kita ada pada mulanya. Setakat ini, ia adalah prosedur tanpa operasi...
Tetapi, sungguh mengagumkan! Ia berlaku (kebetulan tulen, percayalah!), itu metaconfig tahu
tentang $insize simbol cangkerang. Dengan mengalihkan permulaan insize kepada pembolehubah-
kawasan interpolasi skrip .SH dan memulakannya dengan Konfigurasi-nilai yang dikira,
dan mengalih keluar komen yang kini tidak berguna ditambah oleh makeSH, kita mendapatkan:

kes $CONFIG masuk
'')
jika ujian -f config.sh; maka TOP=.;
ujian elif -f ../config.sh; maka TOP=..;
ujian elif -f ../../config.sh; maka TOP=../ ..;
ujian elif -f ../../../config.sh; maka TOP=../../..;
ujian elif -f ../../../../config.sh; maka TOP=../../../..;
lagi
echo "Tidak dapat mencari config.sh."; keluar 1
fi
. $TOP/config.sh
;;
bahawa C
kes "$ 0" dalam
*/*) cd `expr X$0 : 'X\(.*\)/'` ;;
bahawa C
echo "Mengekstrak insize (dengan penggantian berubah-ubah)"
$spitshell >insize <
$startsh
insize='$intsize'
!GROK!INI!

$spitshell >>insize <<'!NO!SUBS!'
echo "Pada mesin ini, jenis int ialah $intsize bytes"
!NO!SUBS!
chmod 755 insize
$eunicefix insize

Sudah tentu, menjalankan skrip ini melalui shell sekali lagi akan mengeluarkan skrip yang sama. Tetapi kalau
kami berlari Konfigurasi pada mesin di mana an int disimpan sebagai kuantiti 64 bit, config.sh akan
menetapkan insize hingga 8 dan insize skrip akan menanggung nilai yang betul dan mencetak:

Pada mesin ini, jenis int ialah 8 bait

yang betul. tahniah! Kami baru sahaja mengkonfigurasi skrip shell!!

producing config.h
Sekarang kita boleh lihat caranya config.h dihasilkan daripada config_h.SH. Kami tahu itu
berlari Konfigurasi menghasilkan a config.sh skrip (bagaimana sebenarnya ini dilakukan bukan secara ketat
relevan di sini, tetapi bagi yang ingin tahu, ia adalah satu lagi penggantian dokumen di sini
Konfigurasi sendiri). The config_h.SH itu sendiri dibina oleh metaconfig pada masa yang sama
Konfigurasi ialah, dengan syarat anda menggunakan sekurang-kurangnya satu simbol C dalam sumber anda.

Mari kita lihat secara rawak config_h.SH fail untuk melihat apa yang sebenarnya berlaku:

kes $CONFIG masuk
'')
jika ujian -f config.sh; maka TOP=.;
ujian elif -f ../config.sh; maka TOP=..;
ujian elif -f ../../config.sh; maka TOP=../ ..;
ujian elif -f ../../../config.sh; maka TOP=../../..;
ujian elif -f ../../../../config.sh; maka TOP=../../../..;
lagi
echo "Tidak dapat mencari config.sh."; keluar 1
fi
. $TOP/config.sh
;;
bahawa C
kes "$ 0" dalam
*/*) cd `expr X$0 : 'X\(.*\)/'` ;;
bahawa C
echo "Mengekstrak config.h (dengan penggantian berubah-ubah)"
sed < config.h -e 's!^#undef!/define!' -e 's!^#un-def!#undef!'
/*
* Fail ini dihasilkan dengan menjalankan skrip config_h.SH, yang
* mendapat nilainya daripada config.sh, yang biasanya dihasilkan oleh
* menjalankan Konfigurasi.
*
* Jangan ragu untuk mengubah suai mana-mana ini apabila perlu. Perhatikan, bagaimanapun,
* yang menjalankan config.h.SH sekali lagi akan memadamkan sebarang perubahan yang telah anda buat.
* Untuk perubahan yang lebih kekal edit config.sh dan jalankan semula config.h.SH.
*/

/* Masa konfigurasi: $cf_time
* Dikonfigurasikan oleh: $cf_by
* Sistem sasaran: $myuname
*/

#ifndef _config_h_
#define _config_h_

/* bsalinan:
* Simbol ini dipetakan ke memcpy jika rutin bcopy() tidak
* tersedia untuk menyalin rentetan.
*/
/* HAS_BCOPY:
* Simbol ini ditakrifkan jika rutin bcopy() tersedia untuk
* menyalin blok memori. Anda tidak sepatutnya menggunakan simbol ini di bawah
* keadaan biasa dan gunakan bcopy() secara langsung sebaliknya, yang
* akan dipetakan ke memcpy() jika bcopy tidak tersedia.
*/
#$d_bcopy HAS_BCOPY /**/
#ifndef ADA_BCOPY
#ifdef bcopy
#un-def bcopy
#endif
#define bcopy(s,d,l) memcpy((d),(s),(l)) /* dipetakan ke memcpy */
#endif

/* HAS_DUP2:
* Simbol ini, jika ditakrifkan, menunjukkan bahawa rutin dup2 adalah
* tersedia untuk pendua deskriptor fail.
*/
#$d_dup2 HAS_DUP2 /**/

/* I_STRING:
* Simbol ini, jika ditakrifkan, menunjukkan kepada program C bahawa ia sepatutnya
* termasuk (sistem USG) bukannya (sistem BSD).
*/
#$i_string I_STRING /**/

#endif
!GROK!INI!

Di bahagian atas fail, kami mengenali binaan .SH standard yang telah kami miliki
dipelajari secara terperinci. Seterusnya datang pengekstrakan fail itu sendiri, melalui dokumen di sini dengan
penggantian berubah-ubah. Walau bagaimanapun, di sini kami tidak menggunakan dataran kucing tetapi a sed sebaliknya, sejak
kita perlu melakukan beberapa penyuntingan lanjut dengan segera. Kita akan lihat mengapa kemudian, jadi mari kita lupakan
mengenainya sekarang.

Kami kini mencapai komen utama, dan fail ditandakan dengan masa konfigurasi, the
sistem sasaran, dsb... (pembolehubah tersebut datang dari sumber config.sh fail telah
ditetapkan oleh Konfigurasi). Pengepala ulasan itu diikuti dengan perlindungan '#ifndef' untuk dijaga
terhadap pelbagai kemasukan fail ini. Kemudian datanglah intipati fail...

Ia membantu untuk mengetahui $d_* and $i_* pembolehubah ditetapkan kepada sama ada 'menentukan'atau'undef' oleh
Konfigurasi, bergantung pada sama ada fungsi atau fail sertakan terdapat pada sistem atau
bukan. Ini bermakna:

#$d_bcopy HAS_BCOPY /**/

baris akan diperluaskan kepada sama ada:

#define HAS_BCOPY /**/

jika pembolehubah $d_bcopy ditetapkan kepada 'define' atau:

#undef HAS_BCOPY /**/

jika $d_bcopy ditetapkan kepada 'undef', kerana ciri itu tiada di sana. Namun, itu bukan
apa yang ditulis dalam config.h fail kerana sed penapis yang telah kita lihat,
yang akan mengubah bentuk kedua menjadi:

/*#define HAS_BCOPY /**/

Itu adalah borang yang berguna untuk diedit kemudian config.h kerana anda hanya perlu mengeluarkannya
mendahului '/*' jika anda ingin mengatasi Konfigurasipilihan. Begitu juga, anda boleh menambah satu
'/*' pada permulaan baris '#define' untuk mengelakkan definisi simbol tertentu.
Inilah sebabnya mengapa setiap definisi simbol dilindungi oleh '/**/' di belakang, untuk menutup pendahuluan
ulasan dibuka oleh '/*' (komen tidak bersarang dalam C).

Sekarang menukar '#undef' kepada '/*#define' adalah bagus, tetapi jika kita benar-benar mahu menulis a
'#undef', kami tersekat... melainkan kami menulisnya sebagai '#un-def' dan biarkan sed betulkan itu kepada '#undef'
semasa menghasilkan config.h, yang sebenarnya dilakukan di sini.

Jenis penaakulan yang sama berlaku untuk dua baris tersebut:

#$d_dup2 HAS_DUP2 /**/
#$i_string I_STRING /**/

dan mengandaikan config.sh mentakrifkan:

d_dup2='define'
i_string='undef'

kita akan mendapatkan dalam yang dihasilkan config.h:

#define HAS_DUP2 /**/
/*#define I_STRING /**/

Jelas seperti air yang mengalir? Baik!

Sekarang ia sepatutnya jelas bahawa dengan memasukkan config.h dalam semua fail sumber C anda, anda dapat
tahu apa yang Konfigurasi telah meneka pada sistem anda. Sebenarnya, dengan menggunakan simbol tersebut, anda
menulis kod C yang dikonfigurasikan, sejak metaconfig akan tahu bahawa anda memerlukan simbol dan kehendak tersebut
menjana yang sesuai config_h.SH fail serta semua kod yang diperlukan dalam Konfigurasi kepada
hitung nilai yang sesuai untuk mereka (dengan memberikan nilai kepada pembolehubah shell yang berkaitan).

Berlari Metaconfig
Mari fokus pada metaconfig atur cara untuk seketika untuk memahami bagaimana ia menggunakan unitnya dan
kod sumber anda untuk menghasilkan semua fail konfigurasi yang diperlukan. Jika anda berhasrat untuk menulis baru
unit, anda harus mempunyai pemahaman yang baik tentang keseluruhan skema.

Jika tiada fail MANIFEST.new, metaconfig akan cuba menggunakan fail MANIFEST sebaliknya,
untuk kemudahan. Di mana-mana sahaja kita menyebut MANIFEST.baru, ia boleh difahami sebagai MANIFEST
dengan syarat tiada fail MANIFEST.new ditemui pada akar pakej anda.

Dengan mengandaikan fail MANIFEST.new anda ditetapkan dengan betul dan menyenaraikan semua fail sumber yang anda ingini
konfigurasikan, dan anda telah jalankan packint dalam direktori sumber akar anda untuk mencipta a
.pakej fail, anda boleh jalankan metaconfig dan anda akan mendapat perkara berikut:

$ metaconfig
Mengesan unit...
Mengeluarkan senarai pergantungan daripada 312 unit...
Mengekstrak nama fail (*.[chyl] dan *.SH) daripada MANIFEST.new...
Membina fail Dikehendaki...
Mengimbas fail .[chyl] untuk simbol...
Mengimbas fail .SH untuk simbol...
Mengira graf pergantungan optimum...
Membina fail buatan peribadi...
Menentukan unit yang boleh dimuatkan...
Mengemas kini fail make...
Menentukan susunan yang betul untuk unit...
Mencipta Konfigurasi...
Menderma.

Fasa pertama mencari semua fail unit (berakhir dengan .U) dalam direktori awam
pertama, kemudian dalam peribadi anda. Jika anda menyalin fail awam dalam direktori U peribadi anda
(iaitu direktori bernama U di peringkat atas pakej anda), ia akan mengatasi orang awam
versi. Sebaik sahaja ia mempunyai senarai semua unit yang tersedia, ia menghuraikannya dan mengekstrak semua
baris ?MAKE: untuk mengetahui tentang kebergantungan dan simbol shell yang diketahui. Ia juga
memfokuskan pada baris ?H: untuk mengetahui tentang simbol C dan simbol cangkerang yang mana perlu
dikira untuk mendapatkan nilai yang sesuai untuk simbol C itu (jadi kita mempunyai satu lagi tahap kebergantungan
di sini).

Seterusnya, nama fail yang betul diekstrak daripada fail MANIFEST.new dan a Dikehendaki fail adalah
built: fail itu menyenaraikan semua simbol C dan simbol shell yang diperlukan untuk pakej itu. Kami
mula-mula imbas fail jenis C untuk simbol C, kemudian sebarkan kebergantungan kepada mereka
simbol cangkerang yang berkaitan (dikumpul daripada ?H: baris). Seterusnya fail .SH diimbas dan akhirnya
semua simbol cangkerang diketahui.

Makefile sementara dibina dan metaconfig cuba melakukannya membuat semua simbol cangkang untuk dilihat
apakah arahan (disenaraikan pada baris ?MAKE: baris kedua) yang dilaksanakan, dan dengan itu unit yang manakah
sangat diperlukan. Unit pilihan yang tidak diperlukan akan dialih keluar dan Makefile kedua adalah
dihasilkan. Kali ini, kami tahu tentang semua unit dan pesanan masing-masing, pilihan
unit telah dialih keluar dan nilai lalai dikira untuk simbol shell mereka. The
Konfigurasi skrip kemudiannya boleh dijana, bersama-sama dengan config_h.SH. Telah siap.

konvensyen
Konvensyen yang betul perlu diikuti untuk menjadikan keseluruhan proses berbunyi. Ada kes
konvensyen untuk unit dan konvensyen penamaan berubah-ubah.

Semua unit hendaklah mempunyai huruf pertama berhuruf kecil, melainkan unit khas. Oleh
istimewa, kami maksudkan mereka tidak benar-benar menentukan pembolehubah shell baharu yang boleh digunakan oleh
pengguna dalam fail .SHnya, sebaliknya unit yang menghasilkan skrip atau pembolehubah shell yang menjadi
digunakan secara dalaman oleh Konfigurasi skrip. Contoh biasa ialah Init.U fail iaitu
permulaan pembolehubah utama, atau Myread.U yang menghasilkan myread skrip digunakan hampir
di mana-mana dalam Konfigurasi apabila soalan hendak ditanya kepada pengguna.

Unit bukan khas kemudian dibahagikan kepada dua kumpulan berbeza: unit yang menentukan pembolehubah
dikaitkan dengan simbol C dan unit yang menentukan pembolehubah shell mereka sendiri. Kumpulan pertama
dibahagikan lagi dalam pembolehubah yang berkaitan dengan memasukkan fail (nama mereka bermula dengan i_) dan
pembolehubah yang berkaitan dengan definisi lain (nama bermula dengan d_). Kumpulan kedua telah
nama berdiri untuk dirinya sendiri, misalnya cc.U mentakrifkan $cc pembolehubah shell yang nilainya
pengkompil C yang akan digunakan.

Unit khas kadangkala menyimpan sendiri beberapa pembolehubah yang telah ditetapkan dan mengembalikan "hasil"
dalam pembolehubah lain yang terkenal. Sebagai contoh, myread skrip yang dihasilkan oleh Myread.U
mengharapkan gesaan masuk $rp, jawapan lalai dalam $dflt dan meletakkan jawapan pengguna $ans.
Ini tidak didokumenkan dalam halaman manual ini: anda perlu pergi dan melihat unit itu sendiri
memahami pembolehubah yang digunakan dan bagaimana unit itu akan digunakan.

Menggunakan . Glosari
Fail Glosari dihasilkan secara automatik oleh makegloss skrip, yang mengekstrak
maklumat daripada ?S:, ?C: dan ?MAKE: baris dan memformatkannya mengikut abjad
glosari disusun. Adalah penting untuk membaca Glosari untuk mengetahui tentang simbol anda
dibenarkan untuk digunakan. Walau bagaimanapun, Glosari tidak akan memberitahu anda cara menggunakannya. Biasanya, begitulah
terpulang kepada anda.

Suatu hari nanti, anda mungkin akan menulis unit anda sendiri dan anda akan cukup mengetahuinya metaconfig
untuk melakukannya dengan cepat dan cekap. Walau bagaimanapun, jangan lupa untuk mendokumentasikan kerja anda dengan betul
baris ?S: dan ?C: atau orang lain tidak akan dapat menggunakannya semula. Ingat tentang
masa di mana anda hanya mempunyai Glosari dan halaman manual ini untuk bermula.

Kesimpulan
Sekarang anda tahu metaconfig asas, anda harus membaca DESCRIPTION seksyen, kemudian
langkau ke RUJUKAN bahagian untuk mengetahui tentang semua butiran berdarah seperti yang dibenarkan
sintaks untuk baris kawalan unit (baris bermula dengan '?') atau arahan MAKE yang berbeza
anda dibenarkan menggunakan.

RUJUKAN


Bahagian ini mendokumenkan dalaman bagi metaconfig, pada asasnya sintaks unit, yang istimewa
unit yang perlu anda ketahui dan fail petunjuk.

Umum Unit Syntax
Unit metaconfig dibahagikan kepada dua bahagian yang berbeza. Bahagian pengepala (baris bermula
dengan '?') dan bahagian shell (kod untuk disertakan dalam Konfigurasi skrip). Ia adalah
mungkin untuk menambah ulasan '?X:' di mana-mana sahaja dalam unit, tetapi yang lain '?' baris (juga
dipanggil kawalan talian) mempunyai dasar pesanan yang ketat.

Jika garis kawalan terlalu panjang, adalah mungkin untuk menggunakan sambungan dengan melarikan diri dari perlawanan akhir
baris baru dengan garis miring ke belakang dan meneruskan pada baris seterusnya (yang kemudiannya harus diinden
mengikut ruang atau tab).

Berikut ialah penerangan rasmi bagi setiap garis kawalan. Melainkan dinyatakan
jika tidak, susunan pembentangan ini ialah susunan yang akan digunakan dalam unit.

?RCS: percuma teks
Untuk digunakan untuk ulasan RCS, di bahagian atas unit.

?X: mana-mana teks
Komen tujuan umum. Boleh muncul di mana-mana dalam unit tetapi mesti dibiarkan berasas.
Untuk ulasan RCS, sila gunakan borang ulasan ?RCS:.

?BUAT:lambang senarai: pergantungan senarai [+pilihan]
Ini adalah garis pergantungan pertama. Yang pertama lambang senarai hendaklah menyenaraikan semua simbol
dibina oleh unit ini (iaitu nilai yang dikira oleh bahagian shell unit).
Simbol hendaklah diasingkan ruang. Jika simbol yang ditakrifkan adalah untuk kegunaan dalaman sahaja dan
tidak sepatutnya muncul dalam yang dihasilkan config.sh fail, maka ia hendaklah didahului dengan a
'+' (jangan dikelirukan dengan kebergantungan pilihan yang ditakrifkan selepas ini). Yang kedua
sebahagian daripada senarai (selepas ':' tengah) ialah kebergantungan unit. Ia harus menyenaraikan semua
unit khas yang diperlukan, serta semua simbol yang digunakan oleh cangkerang
pelaksanaan. Jika simbol disambungkan tetapi nilai konfigurasinya tidak kritikal, ia
boleh didahului oleh '+', dalam hal ini ia dipanggil kebergantungan bersyarat: its
unit yang sepadan akan dimuatkan jika, dan hanya jika, simbol itu sebaliknya benar-benar
dikehendaki; jika tidak nilai lalai akan digunakan.

?BUAT:tab arahan
Terdapat satu atau lebih baris arahan berikutan baris pergantungan awal. Itu
arahan akan dilaksanakan apabila unit ingin memuatkannya Konfigurasi. Lihat
perenggan tentang membuat arahan untuk maklumat lanjut. Perhatikan bahawa terkemuka tab
watak diperlukan sebelum arahan.

?Y:susun atur
Isytihar arahan reka letak untuk unit ini. Arahan itu mungkin salah satu rentetan
bahagian, lalai or bawah (kes tidak penting, gaya yang disyorkan adalah untuk mengejanya
huruf besar). Jika ditinggalkan, lalai diandaikan.

Arahan ini hanya diperlukan jika anda ingin memaksa unit di bahagian atas atau bawah
daripada yang dihasilkan Konfigurasi skrip, kerana kebergantungan unit membenarkannya. penting
soalan mungkin dipaksa pada mulanya. Dalam kelas susun atur yang sama, unit
diisih mengikut abjad dengan dua kes khas untuk unit d_* dan i_*, dipaksa
masing-masing di bahagian atas dan bawah kelas mereka (tetapi ini harus dimiliki oleh
kelas lalai).

Ia anda memaksa di bahagian atas unit yang kebergantungannya memerlukan semua unit lain
mendahuluinya, anda tidak mencapai apa-apa yang menarik. Oleh itu, arahan itu sepatutnya
digunakan untuk meningkatkan keutamaan beberapa unit interaktif yang tidak bergantung kepada banyak
simbol lain yang boleh dilihat oleh pengguna, seperti soalan berkaitan laluan.

?S:nama_simbol [(usang lambang senarai)]:
Memperkenalkan simbol cangkerang. Baris pertama ini menamakan simbol, secara pilihan diikuti dengan a
senarai yang dilampirkan di antara kurungan dan memberikan padanan usang. Mereka yang usang
simbol akan dipetakan semula kepada yang baharu nama_simbol jika -o pilihan diberikan kepada
metaconfig.

?S:mana-mana teks, Untuk Glosari
Pada asasnya komen yang menerangkan simbol shell, yang akan diekstrak oleh makegloss
ke dalam fail Glosari.

?S:. Menutup komen simbol shell.

?C:nama_simbol [~ alias] [(usang lambang senarai)]:
Memperkenalkan simbol C baharu. The alias nama ialah nama yang akan digunakan oleh simbol C
dikawal, iaitu jika alias simbol dikehendaki, maka simbol C itu akan ditulis
dalam config_h.SH fail. Biasanya, alias hanyalah '%<' (bermaksud nama unit)
dan terdapat juga ?W: garis memetakan simbol C ke alias. Juga bahagian yang berkaitan
barisan ?H: dilindungi secara eksplisit oleh keadaan '?%<'. Lihat simbol
perenggan aliasing untuk butiran lanjut. Baki baris adalah pilihan
usang lambang senarai, yang menyenaraikan persamaan lama untuk yang baharu nama_simbol.

?C:mana-mana teks, Untuk Glosari and config_h.SH
Pada asasnya komen yang menerangkan simbol C, yang akan diekstrak oleh makegloss
ke dalam fail Glosari dan oleh metaconfig ke config_h.SH fail jika simbol itu
dikehendaki (atau jika aliasnya dikehendaki apabila aliasing simbol digunakan).

?C:. Menutup ulasan simbol C.

?H:?lambang:config_h.SH barangan
Ini adalah permintaan kemasukan umum ke dalam config_h.SH. Baris itu hanya ditulis apabila
yang menjaga lambang benar-benar dikehendaki. Bentuk am ini diperlukan apabila simbol C
aliasing telah digunakan. Jika tidak, jika anda menggunakan salah satu daripada borang "standard" yang lain, the
menjaga secara automatik dilakukan oleh metaconfig sendiri.

?H:#$d_var VAR "$var"
Bersyarat mentakrifkan VAR Simbol C ke dalam $var bila ditetapkan kepada 'menentukan'. Menyiratkan a
'?VAR:' menjaga keadaan, dan metaconfig pautan secara automatik VAR kepada dua cangkangnya
kebergantungan berubah-ubah (iaitu kedua-duanya $d_var and $var akan dibenderakan sebagai mahu if VAR is
digunakan dalam sumber C).

?H:#define VAR [pilihan teks]
Sentiasa mentakrifkan VAR Simbol C kepada beberapa nilai. Menyiratkan '?VAR:' keadaan menjaga.
Kebergantungan shell automatik dibuat pada unit itu sendiri.

?H:#define VAR(x,y,z) $var
Sentiasa mentakrifkan makro VAR menjadi nilai $var pembolehubah. Terpulang kepada
unit untuk memastikan $var memegang nilai yang wajar. Kebergantungan automatik antara C
makro VAR dan pembolehubah shell diwujudkan, dan keseluruhan baris dikawal oleh an
tersirat '?VAR:'.

?H:#$d_var VAR
Mentakrifkan secara bersyarat VAR if $d_var ditetapkan kepada 'menentukan'. Menyiratkan '?VAR:' menjaga
syarat. Kebergantungan shell automatik dijana ke arah $d_war.

?H:#define VAR "$var"
Berikan nilai yang dikonfigurasikan kepada VAR Simbol C. Menyiratkan '?VAR:' guarding condition.
Kebergantungan shell automatik dijana untuk memaut VAR and $var.

?H:. Menutup config_h.SH permintaan kemasukan.

?M:C lambang: C kebergantungan
Memperkenalkan definisi sihir berkenaan simbol C, untuk confmagic.h, dan mentakrifkan
simbol pengawal untuk baki ?M: definisi. Baris ini secara senyap membayangkan
'?W:%<:C lambang', iaitu unit akan dimuatkan ke dalam Configure jika simbol C muncul
dalam sumber C, sama ada sihir digunakan atau tidak. Kebergantungan C diaktifkan
apabila sihir digunakan, untuk memaksa definisi mereka masuk config_h.SH. Walau bagaimanapun, sekiranya
sihir adalah tidak digunakan tetapi simbol C muncul dalam sumber tanpa C yang diperlukan
dependencies, anda akan diberi amaran setiap kali fail Wanted dibina, kerana ia mungkin
isu mudah alih (dan juga kerana unit dimuatkan tanpa syarat ke dalam
Konfigurasikan bila-bila masa simbol C digunakan, tanpa mengira baris ?C: yang lain daripada
unit).

?M:cpp kekurangan
Mentakrifkan pemetaan cpp ajaib yang akan diperkenalkan dalam confmagic.h bila-bila masa yang berkenaan
simbol digunakan. Ada yang tersirat '?sym' menjaga di mana sym ialah nama simbol
ditakrifkan oleh barisan ?M: terkemuka.

?M:. Menutup confmagic.h permintaan kemasukan.

?W:shell lambang senarai:C lambang senarai
Mengikat takdir simbol cangkang dengan simbol C: jika ada simbol C
simbol yang disenaraikan dikehendaki, kemudian semua simbol cangkerang ditandakan sebagai dikehendaki. Berguna untuk
pemasukan daya unit (senarai simbol cangkang ditetapkan kepada '%<') apabila kehadiran beberapa C
simbol dikesan. Senarai simbol shell boleh dibiarkan kosong, untuk mendapat manfaat dari sisi
kesan lokasi simbol C dalam pra-pemproses terbina (simbol being ditakrifkan
untuk pra-pemproses itu jika terdapat dalam sumber). Untuk mencari corak dengan ruang
di dalamnya, anda perlu memetik simbol C dalam petikan mudah, seperti dalam 'struct
Zon masa'.

?V:baca sahaja simbol:baca tulis simbol
Ini adalah satu metalint petunjuk dan harus digunakan hanya dalam unit khas yang mengeksport beberapa cangkang
pembolehubah. Pembolehubah sebelum pertengahan ':' dieksport baca sahaja (menukarnya
akan mengeluarkan amaran), manakala simbol lain boleh dibaca dan diubah secara bebas.

?F:fail diwujudkan
Baris ini mempunyai dua tujuan: ia adalah a metalint petunjuk, dan juga pemegang tempat untuk
masa depan jmake guna. Ia mesti menyenaraikan tiga jenis fail: fail sementara iaitu
dicipta untuk ujian, UU peribadi yang dibuat dalam direktori UU untuk kemudian
teliti, dan yang awam ditinggalkan dalam direktori akar pakej. Sementara
fail mesti disenaraikan dengan '!' sebelumnya watak (bermaksud "tidak! mereka tidak digunakan semula
nanti!"), fail UU peribadi hendaklah didahului dengan './' (bermaksud: untuk menggunakannya, katakan
./fail, Bukan sahaja fail), dan yang awam hendaklah dinamakan apa adanya.

?T:shell sementara
Satu lagi metalint petunjuk. Baris ini menyenaraikan semua pembolehubah shell yang digunakan sebagai sementara
dalam bahagian cangkerang unit ini.

?D:lambang='nilai'
Nilai permulaan untuk simbol yang digunakan sebagai kebergantungan bersyarat. Jika tiada ?D: line is
dijumpai, maka nilai nol digunakan sebaliknya. The metalint program akan memberi amaran kepada anda jika a
simbol digunakan sekurang-kurangnya sekali sebagai kebergantungan bersyarat dan tidak mempunyai hak
?D: permulaan. Ia adalah amalan yang baik untuk menambah baris tersebut walaupun untuk nol
permulaan kerana ia menekankan pada kemungkinan sifat pilihan bagi sesuatu simbol.

?O:mana-mana mesej anda mahu
Arahan ini menunjukkan bahawa unit ini sudah lapuk secara keseluruhan. Setiap kali penggunaan mana-mana
daripada simbolnya dibuat (atau penggunaan tidak langsung melalui kebergantungan), mesej dihidupkan
skrin (pada stderr). Anda boleh meletakkan satu bijih lagi baris, dalam hal ini setiap baris akan
dicetak, mengikut urutan.

?LINT:metalint Petua
Melihat metalint halaman manual untuk penerangan tentang petunjuk berbeza yang boleh
terpakai.

?DI DALAMNYA:pengawalan kod
Kod permulaan yang ditentukan oleh baris ini akan dimuatkan di bahagian atas
Konfigurasi skrip dengan syarat unit diperlukan.

C Simbol Mengasingkan
Kadang-kadang tidak mungkin untuk bergantung metaconfigpilihan lalai sendiri untuk config_h.SH
komen dan definisi simbol C. Di situlah pengalihan berlaku. Oleh kerana ia agak
sukar untuk dijelaskan, kami akan mengkaji contoh untuk memahami mekanisme asas.

Unit d_const.U cuba menentukan sama ada pengkompil C anda diketahui atau tidak malar
kata kunci. Jika tidak, kami mahu memetakan semula kata kunci itu kepada rentetan nol, untuk membiarkan kata kunci itu
menyusun atur cara. Selain itu, kami mahu mencetuskan ujian secara automatik apabila malar perkataan
digunakan.

Berikut ialah bahagian berkaitan unit d_const.U:

?BUAT:d_const: cat cc ccflags Setvar
?BUAT: -pilih tambah $@ %
?S:d_const:
?S: Pembolehubah ini secara bersyarat mentakrifkan simbol HASCONST, yang
?S: menunjukkan kepada program C bahawa pengkompil C ini tahu tentang
?S: jenis const.
?S:.
?C:HASCONST ~ %<:
?C: Simbol ini, jika ditakrifkan, menunjukkan bahawa pengkompil C ini mengetahuinya
?C: jenis const. Tidak perlu sebenarnya menguji simbol itu
?C: dalam program anda. Penggunaan kata kunci "const" semata-mata akan
?C: mencetuskan ujian yang diperlukan.
?C:.
?H:?%<:#$d_const HASCONST /**/
?H:?%<:#ifndef HASCONST
?H:?%<:#define const
?H:?%<:#endif
?H:.
?W:%<:const
?LINT:set d_const
?LINT:konst yang diketahui
: semak kata kunci const
bergema " "
echo 'Menyemak untuk melihat sama ada pengkompil C anda mengetahui tentang "const"...' >&4
/bin/cat >const.c <<'EOCP'
main ()
{
const char *foo;
}
EOCP
jika $cc -c $ccflags const.c >/dev/null 2>&1 ; kemudian
val="$define"
echo "Ya, betul."
lagi
val="$undef"
echo "Tidak, tidak."
fi
tetapkan d_const
eval $setvar

Mula-mula kita perhatikan penggunaan baris ?W:, yang pada asasnya berkata: "Unit ini dikehendaki apabila
malar kata kunci digunakan dalam fail C.". Untuk memetakan semula secara bersyarat malar kepada null
rentetan masuk config.h, saya memilih untuk mentakrifkan secara bersyarat HASCONST melalui $d_const.

Walau bagaimanapun, ini menimbulkan masalah, kerana HASCONST simbol tidak akan digunakan dalam
sumber, hanya malar token ialah. Dan ?H: penentuan baris HASCONST adalah secara tersirat
dijaga oleh '?HASCONST'. Oleh itu, kita mesti menambah kekangan '?%<' yang jelas untuk diberitahu
metaconfig bahawa baris tersebut harus disertakan config_h.SH bila-bila masa simbol '%<'
diingini (%< merujuk kepada nama unit, di sini d_const).

Itu hampir sempurna, kerana baris ?W: akan mahu d_const apabila malar digunakan, maka
baris ?H: akan dimasukkan ke dalam config_h.SH fail. Walau bagaimanapun, komen utama (?C:
garisan) yang dilampirkan pada HASCONST itu sendiri juga dikawal melalui HASCONST, iaitu ia mempunyai tersirat
'?HASCONST' kekangan. Oleh itu keperluan untuk mengasingkan yang HASCONST simbol kepada '%<'.

Baki bahagian unit (bahagian cangkang) adalah sangat mudah. Ia secara ringkas
cuba menyusun program C sampel menggunakan malar kata kunci. Jika ia boleh, maka ia akan
menentukan $d_const melalui $setvar fonction (ditakrifkan oleh Setvar.U unit). Lihat perenggan
tentang unit khas untuk butiran lanjut.

Membuat arahan
Pada baris arahan ?MAKE:, anda boleh menulis arahan shell untuk dilaksanakan seperti sedia ada atau a
khas -pilih perintah yang terperangkap oleh metaconfig dan dihuraikan untuk melihat apa yang sepatutnya
selesai. '-' terkemuka hanya ada untuk menghalang membuat daripada gagal apabila arahan itu kembali
status bukan sifar -- ia tidak benar-benar diperlukan kerana kami menggunakan 'membuat -n' untuk menyelesaikan
kebergantungan, tetapi saya menasihati anda untuk menyimpannya sekiranya ia menjadi wajib dalam versi akan datang.
Sintaks daripada memilih perintah ialah:

-pilih cmd $@ fail_target

di mana $@ ialah makro standard dalam Makefiles berdiri untuk sasaran semasa (nama
daripada unit yang sedang dibina, dengan sambungan .U akhir dilucutkan). The cmd bahagian ialah
sebenar metaconfig perintah untuk dijalankan, dan fail_target adalah satu lagi parameter, yang
tafsiran bergantung kepada cmd sendiri. Ia juga mempunyai sambungan .U terakhirnya dilucutkan dan
biasanya merujuk kepada fail unit, melainkan ia bermula dengan './' dalam hal ini ia merujuk satu
daripada metaconfig mengawal fail dalam '.MT direktori.

Perintah yang tersedia ialah:

tambah Menambahkan fail_target kepada Konfigurasi.

add.Config_sh
Mengisi bahagian itu Konfigurasi menghasilkan config.sh fail. Hanya digunakan
pembolehubah ditambah, yang bersyarat (daripada kebergantungan bersyarat) ialah
dilangkau.

add.Null Menambah bahagian yang memulakan semua pembolehubah shell yang digunakan pada rentetan kosong.

c_h_weed Menghasilkan config_h.SH fail. Hanya baris yang diperlukan dicetak.

cm_h_weed Menghasilkan confmagic.h fail. Hanya baris yang diperlukan dicetak. ini
arahan hanya didayakan apabila -M suis diberikan, atau apabila a confmagic.h fail
sudah wujud.

tutup.Config_sh
Menambah simbol 'EOT' terakhir pada baris dengan sendirinya untuk menamatkan dokumen di sini
membina menghasilkan config.sh fail.

prepend Prepends kandungan sasaran ke fail_target jika fail itu tidak kosong.

rumpai Menambah unit kepada Konfigurasi seperti yang menambah perintah, tetapi buat beberapa ujian tambahan
untuk mengeluarkan '?lambang' dan '%lambang' baris daripada fail_target jika simbol
tidak dikehendaki atau dikehendaki bersyarat. Borang '%' hanya digunakan secara dalaman oleh
metaconfig sambil menghasilkan fail .U sendiri dalam '.MT' direktori.

lap Sama seperti menambah benar-benar, tetapi melakukan penggantian makro tambahan. The
makro yang tersedia diterangkan dalam Terdawai keras Makro perenggan.

Sebagai catatan sampingan, metaconfig menjana a -cond perintah dalaman untuk berurusan dengan bersyarat
kebergantungan. Anda tidak sepatutnya menggunakannya sendiri, tetapi anda akan melihatnya jika mengimbas
dijana Makefile dalam .MT direktori.

Terdawai keras Makro
Makro berikut diiktiraf oleh lap perintah dan digantikan sebelum dimasukkan ke dalam
Konfigurasi:

Nombor semakan asas pakej, yang diperoleh daripada .pakej.

Tarikh semasa.


Alamat e-mel penyelenggara pakej ini, diperoleh daripada anda
.pakej.


Nama pakej, seperti yang diperoleh daripada anda .pakej fail.


Tahap tampalan metaconfig program (ditamatkan memihak kepada ).


Tahap semakan SVN bagi metaconfig program.

Nombor versi bagi metaconfig program.

Makro tersebut digunakan terutamanya untuk mengenal pasti metaconfig versi yang menghasilkan a
tertentu Konfigurasi skrip dan untuk pakej yang mana ia dilakukan. Alamat e-mel bagi
penyelenggara adalah tertanam dalam arahan utama yang Konfigurasi cetakan apabila bermula.

baru-baru ini metaconfig versi memahami sintaks bentuk yang lebih umum:

<$variable>

yang digantikan pada masa penjanaan Konfigurasikan dengan nilai berubah-ubah diambil daripada anda
.pakej fail. Akhirnya, format makro berwayar keras lama akan hilang, dan <$baserev>
akan menggantikan dalam semua unit yang dibekalkan.

khas Unit
Unit khas berikut digunakan untuk memfaktorkan kod dan menyediakan tahap yang lebih tinggi
kefungsian. Mereka sama ada menghasilkan skrip shell yang boleh diperolehi atau shell
pembolehubah yang boleh menipu'ed. Lulus parameter dilakukan melalui pembolehubah yang diketahui, sama ada
dinamakan atau tanpa nama seperti $1, $2, dsb... (yang boleh ditetapkan dengan mudah melalui shell menetapkan
pengendali). Bila Konfigurasi melaksanakan, ia mencipta dan masuk ke a UU direktori, jadi setiap
skrip yang dihasilkan terletak di sana dan tidak mengganggu fail dari pakej anda.

Berikut ialah unit sepcial yang perlu anda ketahui, dan cara menggunakannya.

Cppsym.U
Unit ini menghasilkan skrip shell yang dipanggil Cppsym, yang boleh digunakan untuk menentukan
sama ada sebarang simbol dalam senarai ditakrifkan oleh prapemproses C atau pengkompil C yang anda miliki
ditentukan. Ia boleh menentukan status mana-mana simbol, walaupun simbol dalam
(senarai atribut) lebih mudah ditentukan.

Csym.U
Ini menetapkan pembolehubah shell $csym, digunakan secara dalaman oleh Konfigurasi untuk menyemak sama ada a
simbol C yang diberikan ditakrifkan atau tidak. Penggunaan biasa ialah:

tetapkan hasil simbol [-fva] [sebelumnya]
eval $csym

Itu akan menetapkan mengakibatkan pembolehubah kepada 'benar' jika fungsi [-f], pembolehubah [-v] atau
tatasusunan [-a] ditakrifkan, 'palsu' sebaliknya. Jika nilai sebelumnya diberikan dan -r
suis telah disediakan untuk Konfigurasi (Lihat Konfigurasi Pilihan perenggan), maka itu
nilai digunakan semula tanpa mempersoalkan.

Cara pengiraan ini dilakukan bergantung kepada jawapan yang diberikan pengguna kepada soalan tersebut
Konfigurasi akan bertanya tentang sama ada ia harus melaksanakan nm perahan atau tidak. Sekiranya
pengekstrakan telah dilakukan, unit hanya melihat senarai simbol, jika tidak
ia menjalankan ujian pautan kompilasi, melainkan -r telah diberikan untuk menggunakan semula yang dikira sebelumnya
nilai, secara semula jadi...

End.U
Dengan menyalin unit ini ke dalam peribadi anda U direktori dan menambahkan kebergantungan pada
?BUAT: talian, anda boleh memaksa unit yang diberikan untuk dimuatkan ke dalam Konfigurasi walaupun tidak
sebaliknya mahu. Sesetengah unit hanya boleh dipaksa masuk Konfigurasi Jalan itu.

Filexp.U
Unit ini menghasilkan skrip shell filexp yang akan mengembangkan nama fail bermula dengan
tildes. Penggunaan biasa ialah:

exp_name=`./filex $name`

untuk menetapkan nama fail yang dikembangkan dalam exp_name.

Findhdr.U
Unit ini menghasilkan a findhdr skrip yang digunakan untuk mencari fail pengepala dalam
$usrinc atau tempat asing lain menggunakan keupayaan cpp. Skrip diberi a
sertakan nama asas fail seperti 'stdio.h' atau 'sys/file.h' dan ia mengembalikan laluan penuh
fail inlcude dan status sifar jika ditemui, atau rentetan kosong dan status bukan sifar
jika fail tidak dapat dikesan.

Getfile.U
Unit ini menghasilkan sedikit kod shell yang mesti diperolehi untuk mendapatkan fail
namakan dan buat beberapa pemeriksaan kewarasan. Secara pilihan, pengembangan ~nama dilakukan.

Untuk menggunakan unit ini, $rp and $dflt mesti memegang soalan dan jawapan lalai, yang
akan diluluskan apa adanya kepada myread skrip (lihat akan datang Myread.U). The $fn
pembolehubah mengawal operasi dan hasilnya dikembalikan ke $ans.

Untuk mencari fail atau direktori, letakkan 'f' atau 'd' f~/. Jika '~' muncul, maka ~nama
penggantian dibenarkan. Jika '/' muncul, hanya nama laluan mutlak diterima dan
~penggantian nama sentiasa dikembangkan sebelum dikembalikan. Jika '+' dinyatakan,
semakan kewujudan dilangkau. Jika 'n' muncul di dalam $fn, maka pengguna dibenarkan untuk
jawab 'tiada'.

Biasanya, melainkan anda meminta kemudahalihan, ~penggantian nama berlaku apabila diminta.
Walau bagaimanapun, ada kalanya anda ingin memintas kemudahalihan dan memaksa
penggantian. Anda boleh menggunakan huruf 'e' (kembangkan) untuk melakukannya.

Jika jenis 'l' (locate) khas digunakan, maka $fn pembolehubah mesti berakhir dengan ':',
diikuti dengan nama asas fail. Jika jawapannya ialah direktori, nama asas fail adalah
dilampirkan sebelum menguji kewujudan fail. Ini berguna dalam soalan gaya cari
seperti ini:

dflt='~berita/lib'
: tidak perlu menyatakan 'd' atau 'f' apabila 'l' digunakan
fn='l~:aktif'
rp='Di manakah fail aktif?'
. ./getfile
aktif="$ans"

Selain itu, huruf 'p' (laluan) boleh digunakan bersama dengan 'l' untuk memberitahu
getfile bahawa jawapan tanpa '/' di dalamnya harus diterima, dengan mengandaikan bahawa ia akan
berada dalam PATH semua orang pada masa nilai ini diperlukan.

Juga berguna ialah kemungkinan untuk menentukan senarai jawapan yang harus diterima
verbatim, memintas semua cek. Senarai ini mesti berada dalam kurungan dan item
mesti dipisahkan koma, tanpa ruang celahan. Jangan lupa untuk memetik
rentetan yang terhasil kerana kurungan bermakna kepada shell. Sebagai contoh:

dflt='/bin/install'
fn='/fe~(pasang,./pasang)'
rp='Gunakan atur cara pemasangan yang mana?'
. ./getfile
install="$ans"

akan membenarkan pengguna hanya menentukan laluan yang layak sepenuhnya merujuk kepada fail sedia ada,
tetapi masih membenarkan jawapan "pasang" dan "./pasang" khas (dengan andaian
sudah tentu sesuatu akan berurusan dengan mereka khususnya di kemudian hari dalam rantaian kerana mereka melakukannya
tidak sesuai dengan kerangka umum yang dijangkakan).

Jika jawapan kepada soalan adalah 'tiada', maka semakan kewujudan dilangkau dan
rentetan kosong dikembalikan. Perhatikan bahawa sejak getfile panggilan myread dalaman, semua
ciri yang tersedia dengan myread memohon di sini untuk.

Jika nilai yang dikembangkan sepenuhnya diperlukan (contohnya dalam Makefile), anda boleh menggunakan
yang $ansexp pembolehubah yang sentiasa ditetapkan dengan betul oleh getfile sebagai yang diperluaskan
versi $ans. Sudah tentu, ia tidak akan mengembangkan ~name jika anda tidak membenarkannya dalam
tempat pertama dalam $fn berubah-ubah.

Inhdr.U
Unit ini menghasilkan $inhdr pembolehubah shell, digunakan secara dalaman oleh Konfigurasi untuk memeriksa
sama ada set pengepala wujud atau tidak. Penggunaan biasa ialah:

tetapkan pengepala i_header [ header2 i_header2 ... ]
eval $inhdr

Itu akan mencetak mesej, mengatakan sama ada pengepala ditemui atau tidak dan menetapkannya
i_header berubah dengan sewajarnya. Jika lebih daripada satu tajuk ditentukan dan yang pertama
pengepala tidak ditemui, kami cuba yang seterusnya, sehingga senarai kosong atau satu ditemui.

Inlibc.U
Unit ini menghasilkan $inlibc pembolehubah shell, digunakan secara dalaman oleh Konfigurasi untuk memeriksa
sama ada fungsi C yang diberikan ditakrifkan atau tidak. Penggunaan biasa ialah:

tetapkan fungsi d_func
eval $inlibc

Itu akan mencetak mesej, mengatakan sama ada fungsi itu ditemui atau tidak dan ditetapkan
$d_func sewajarnya. Secara dalaman, ia menggunakan $csym rutin.

Loc.U
Unit penting ini menghasilkan skrip shell loc yang boleh digunakan untuk mengetahui di mana
dalam senarai direktori fail yang diberikan terletak. Argumen pertama menentukan fail ke
berada, hujah kedua ialah apa yang akan dikembalikan jika carian gagal, dan
argumen reamining ialah senarai direktori tempat fail itu hendak dicari. Untuk
contoh:

dflt=`./loc sendmail.cf X / usr / lib /var/lib/sendmail / lib`

akan ditetapkan $dflt kepada X jika tidak sendmail.cf fail ditemui di bawah direktori yang disenaraikan,
atau seumpamanya /usr/lib/sendmail.cf pada beberapa sistem. Lihat juga Getfile.U.

MailAuthor.U
Unit ini perlu disertakan pada baris ?MAKE: End.U peribadi anda sendiri untuk dibuat
ke dalam Konfigurasi. Ia menawarkan pengguna untuk mendaftarkan dirinya kepada pengarang, secara pilihan
dimaklumkan apabila patch baharu tiba atau menerimanya secara automatik apabila dikeluarkan.
Anda perlu memasang mailagent untuk melakukan ini (sekurang-kurangnya versi 3.0).

Senarai Mel.U
Unit ini perlu disertakan pada baris ?MAKE: End.U peribadi anda sendiri untuk dibuat
ke dalam Konfigurasi. Ia menawarkan pengguna untuk melanggan atau berhenti melanggan senarai mel
di mana perbincangan berkaitan pakej sedang berlangsung. Awak perlu lari packinit
dan jawab soalan berkaitan senarai mel untuk menyediakan pembolehubah yang betul dalam anda
.pakej sebelum unit ini boleh beroperasi.

Myinit.U
Salin unit ini ke dalam peribadi anda U direktori untuk menambah nilai lalai anda sendiri kepada beberapa
pembolehubah dalaman. Unit ini dimuatkan ke dalam Konfigurasi selepas semua lalai
permulaan telah dilakukan.

Myread.U
Unit ini menghasilkan myread skrip shell yang mesti diperolehi untuk melakukan a
membaca. Ia membenarkan pelarian shell, penetapan lalai dan penilaian parameter, sebagai
didokumenkan dalam unit Instruct.U. Ia juga membenarkan tetapan dinamik bagi -d pilihan,
yang akan digunakan untuk baki pelaksanaan skrip.

Untuk menggunakan unit ini, $rp mesti memegang soalan dan $dflt harus mengandungi lalai
jawab. Soalan akan dicetak oleh skrip itu sendiri, dan hasilnya dikembalikan
dalam $ans berubah-ubah.

Berikut adalah penggunaan biasa:

dflt='y'
rp='Soalan?'
. ./myread
value="$ans"

Lihat unit itu sendiri untuk maklumat lanjut.

Oldconfig.U
Unit ini mesti menjadi sebahagian daripada pergantungan anda ?MAKE: baris apabila beberapa unit anda mencuba
untuk menggunakan semula nilai simbol lama. Unit ini bertanggungjawab untuk mendapatkan jawapan lama
dari config.sh atau memberikan petunjuk berguna apabila berjalan pada platform tertentu untuk
kali pertama. Lihat Konfigurasi Petua perenggan untuk maklumat lanjut tentang pembayang.

Awalan.U
Tujuan unit ini adalah untuk mengesan perubahan dalam direktori awalan pemasangan kepada
hitung semula lalai yang sesuai secara automatik daripada jawapan sebelumnya. Ia bergantung pada
nilai $oldprefix pembolehubah yang memegang direktori awalan sebelumnya apabila ia
berubah, dan kosong sebaliknya. Sebagai contoh, jika awalan ditukar daripada / memilih kepada
/ usr / setempat, maka direktori pemasangan binari sebelumnya akan ditukar daripada
/opt/bin kepada / usr / local / bin, atau akan kekal tidak berubah jika itu, katakan, / bin.

Anda perlu menelefon menetapkan sebelum mengeluarkan an menipu on $awalan, Seperti:

tetapkan dflt var [dir]
eval $prefixit

yang akan ditetapkan $dflt kepada $var or $awalan/dir bergantung pada sama ada awalan kekal
sama atau tidak. Jika dir ialah rentetan tiada, nilai ruang tunggal dalam $dflt disimpan sebagai-
ialah, walaupun awalan berubah. Jika dir ditinggalkan, maka $dflt ditetapkan kepada kosong
rentetan jika awalan berubah, kepada $var sebaliknya.

Prefixup.U
Niat unit ini adalah serupa dengan Prefixit.U, iaitu ia membantu membetulkan
rentetan lalai untuk menampung perubahan awalan. Walau bagaimanapun, pembolehubah shell $prefixup,
apabila dinilai, hanya akan memulihkan ~ pengembangan nama, sekiranya awalan menggunakan pelarian sedemikian
mekanisme. Gunakannya sebagai:

tetapkan dflt
eval $prefixup

sebelum menggesa melalui getfile contohnya. Jika awalan tidak menggunakan ~nama
pengembangan, maka perkara di atas akan menjadi larangan pada y berubah-ubah, secara semula jadi.

Typedef.U
Unit ini menghasilkan $typedef pembolehubah shell, digunakan secara dalaman oleh Konfigurasi untuk memeriksa
sama ada typedef wujud atau tidak. Penggunaan biasa ialah:

tetapkan typedef val_t lalai [ termasuk ]
eval $typedef

Ini akan menetapkan pemboleh ubah val_t kepada nilai lalai jika typedef tidak dijumpai
antara yang disenaraikan termasuk fail, atau ke mesin taip jika dijumpai. Jika tiada fail termasuk
dinyatakan, unit melihat ke dalam sahaja. Jika anda menyatakan beberapa termasuk, sahaja
itu dipandang.

Unix.U
Tujuan unit ini adalah untuk menentukan beberapa UNIX-isme yang paling biasa melalui pembolehubah
yang boleh diubah daripada baris arahan atau melalui fail petunjuk yang betul. khususnya,
$_exe, $_o and $_a ditetapkan. Semua unit hendaklah merujuk kepada $_o dan tidak boleh .o secara langsung.
'.' adalah sebahagian daripada pembolehubah ini.

Setvar.U
Unit ini menghasilkan pembolehubah, yang digunakan secara dalaman oleh Konfigurasi untuk menetapkan a
menentukan/undef nilai kepada simbol yang diberikan, mengeluarkan amaran apabila ia tiba-tiba berubah
daripada nilai sebelumnya. Sebagai contoh:

val="$define"
tetapkan d_variable
eval $setvar

Jika sebelumnya $d_pembolehubah nilai adalah bukan nol dan $val adalah berbeza, "whoa"
amaran dikeluarkan.

Whoa.U
Unit ini menghasilkan whoa skrip, yang mengeluarkan amaran apabila nilai dalam pembolehubah
nama siapa $var tidak sama dengan nilai lamanya yang sebelumnya dipegang $was. setelah
kembali, $td and $tu memegang nilai yang sepatutnya untuk menentukan or undef pembolehubah. Lihat
contoh dalam Inlibc.U.

terbina Pra-pemproses
Setiap unit yang akan dimasukkan Konfigurasi dijalankan melalui pra-pemproses terbina dalam. pra-
kenyataan pemproses diperkenalkan oleh aksara '@' ('#' ialah komen shell
watak). Ia berfungsi hanya seperti yang dilakukan oleh pra-pemproses C tetapi membenarkan shell dan perl
melarikan diri. Berikut adalah fungsi yang tersedia:

@jika ungkapan
If ungkapan adalah benar, teruskan memuatkan kod sehingga @akhir, @elsif atau @else.

@elsif ungkapan
Pilihan alternatif. Jika ungkapan adalah benar, teruskan memuatkan kod sehingga @akhir,
@elsif atau @else yang lain.

@else Kod lalai untuk dimuatkan jika @if ungkapan adalah palsu dan tiada satu pun
pilihan @elsif dipadankan. Muatkan sehingga @akhir.

@end Tutup penyata pemuatan bersyarat yang dibuka oleh @if.

@define lambang
Memberitahu pra-pemproses itu lambang ditakrifkan mulai sekarang.

Yang bersyarat ungkapan boleh memasukkan nama simbol (nilai benar jika simbol dikehendaki atau
ditakrifkan melalui @define atau shell/perl melarikan diri. Atom tersebut boleh digabungkan menggunakan
pengendali boolean tradisional '!' untuk penolakan, '&&' untuk logik dan, dan '||' untuk logik
atau.

Teks yang disertakan dalam kurungan tunggal ialah ujian cangkang, manakala teks antara kurungan berganda ialah
ujian perl. Iaitu ungkapan:

{ shell teks }
{{ perl teks }}

diterjemahkan ke dalam:

if shell teks >/dev/null 2>&1; kemudian keluar 0; lain keluar 1; fi
jika (perl teks) {keluar 0;} lain {keluar 1;}

dan status keluar digunakan dalam cara standard untuk mendapatkan nilai boolean, iaitu 0 adalah benar dan
semua yang lain adalah palsu. Ambil perhatian bahawa hanya syarat mudah boleh dinyatakan dalam perl, sehingga
beberapa kod kompleks boleh dimuatkan di dalamnya metaconfig dan dilaksanakan.

Pra-pemproses terbina dalam boleh digunakan untuk menala halus beberapa unit (lihat d_gethname.U bagi
contoh kompleks) bergantung pada simbol yang sebenarnya digunakan oleh program atau fail
terdapat dalam pengedaran. Sebagai contoh, Oldconfig.U menggunakan ujian seperti:

@if {test -d ../hints}

and Konfigurasi akan mengandungi kod yang bergantung kepada petunjuk hanya jika terdapat a Petua direktori di
direktori peringkat atas pakej. Ambil perhatian bahawa ujian dijalankan dari dalam '.MT' direktori,
maka '../' yang diperlukan dalam ujian.

Pra-pemproses juga boleh digunakan untuk mengelak daripada meletakkan kod yang tidak berguna apabila simbol tidak
ditakrifkan. Unit yang mentakrifkan lebih daripada satu simbol boleh dilindungi dengan cara itu (kerana unit itu
dimuatkan secara keseluruhan) dengan mengumpulkan kod yang bergantung kepada simbol dalam pasangan @if/@end. Untuk
contoh:

@jika saya_MASA || I_SYS_TIME || I_SYS_TIME_KERNEL
need_time_h='true'
@lain
need_time_h='false'
@akhir

akan menguji sama ada kod sumber menggunakan salah satu daripada tiga simbol yang mengawal
yang masa.h or sys/time.h kemasukan dan tentukan simbol cangkang dengan sewajarnya. Itu memberi
Konfigurasi maklum balas tentang apa yang sumber perlukan dan mengelakkan kelemahan yang telah ditetapkan
unit beku.

Melalui baris '?W:', anda boleh mendapatkan kombinasi yang menarik. Sebagai contoh, i_time.U unit
perlu mengetahui sama ada sumber C menggunakan sebarang penggunaan struktur timezone taip. Oleh itu,
garisan itu:

?W::zon waktu

digunakan untuk kesan sampingannya dalam mentakrifkan simbol timezone untuk pra-pemproses. The
kod unit kemudiannya boleh berkata:

@jika zon waktu
untuk s_timezone dalam '-DS_TIMEZONE' ''; buat
@lain
s_timezone=''
@akhir

... kod menggunakan s_timezone ...

@jika zon waktu
dilakukan
@akhir

dan mempunyai gelung tambahan mencuba dua nilai berturut-turut untuk s_zon waktu berubah-ubah, tetapi hanya
jika diperlukan.

Sudah usang Simbol
Simbol usang dipelihara untuk memudahkan peralihan dengan yang lebih lama metaconfig unit. Melainkan
yang -o suis dihantar ke metaconfig mereka akan diabaikan. Walau bagaimanapun, an Sudah usang fail akan
dijana, memberitahu anda fail mana yang menggunakan simbol usang tersebut dan apa
adalah simbol baharu yang akan digunakan.

Jangka hayat untuk simbol usang adalah satu semakan penuh, iaitu ia akan dikeluarkan apabila
semakan asas seterusnya dikeluarkan (naik taraf patch tidak dikira sudah tentu). Oleh itu, ia adalah
bijak untuk menterjemah sumber anda dan mula menggunakan simbol baharu secepat mungkin.

Konfigurasi Petua
Ia mungkin berlaku bahawa logik konfigurasi dalaman membuat pilihan yang salah. Untuk
contohnya, pada beberapa platform, yang vfork() panggilan sistem ada tetapi rosak, jadi ia sepatutnya
tidak boleh digunakan. Tidak mungkin untuk memasukkan pengetahuan itu dalam unit itu sendiri, kerana
itu mungkin masalah sementara yang akhirnya akan diselesaikan oleh vendor, atau sesuatu yang
telah diperkenalkan oleh peningkatan OS baharu.

Bagaimanapun, untuk semua masalah kecil yang terlalu khusus sistem, metaconfig
menyediakan sokongan fail petunjuk. Untuk menggunakannya, anda perlu membuat a Petua direktori di
direktori peringkat atas pakej, dan milikinya apabila anda menjalankan metaconfig. Itu akan memuatkan
bahagian berkaitan petunjuk daripada Oldconfig.U.

Sejak itu, anda boleh pratetap beberapa pembolehubah shell Konfigurasi digunakan dalam OS khusus
fail .sh. Terdapat kod dalam Oldconfig.U yang cuba meneka fail petunjuk mana yang diperlukan oleh
mengira nama standard berdasarkan nama OS sistem, nama kernel, keluaran
nombor, dsb... Memandangkan maklumat ini mungkin berubah dengan cepat, saya tidak mendokumenkannya
di sini. Anda perlu membuat kejuruteraan terbalik kod dari Oldconfig.U.

Apabila anda mula-mula mengeluarkan pakej anda, direktori fail petunjuk anda harus kosong. Sekiranya
pengguna pakej anda mengadu bahawa mereka menghadapi masalah Konfigurasi lalai pada a
sistem tertentu, anda perlu melihat sama ada ini adalah masalah khusus platform atau a
yang umum. Dalam kes terdahulu, sudah tiba masanya untuk memperkenalkan fail pembayang baharu, semasa dalam fail
kemudiannya, unit yang sepadan hendaklah disemak semula.

Sebagai contoh, sistem SGI diketahui telah rosak vfork() panggilan sistem, setakat ini
menulis. Dan nama fail petunjuk yang sepadan ialah sgi.sh. Jadi apa yang anda perlu lakukan ialah mencipta
a petunjuk/sgi.sh fail yang anda tulis:

d_vfork="$define"

yang akan sentiasa dipetakan semula vfork on garpu (Lihat d_vfork.U). Apabila berjalan pada sistem SGI untuk
kali pertama, Konfigurasi akan mengesan bahawa terdapat petunjuk/sgi.sh fail, dan yang kami lakukan
mesin IRIX (nama kernel selalunya /irix), oleh itu ia akan mencadangkan sgi sebagai
petunjuk yang mungkin. Jika pengguna menerimanya, dan sejak $d_vfork nilai diubahsuai melalui
$setvar memanggil, a whoa! akan dipancarkan untuk memberi amaran bahawa kita akan mengatasi nilai tersebut
dikira oleh Konfigurasi.

Ambil perhatian bahawa anda tidak perlu menyediakan semua petunjuk yang diketahui oleh Oldconfig.U. Jika fail petunjuk adalah
hilang, ia tidak akan dicadangkan sebagai pilihan yang mungkin. Ujian heuristik dijalankan untuk mengira
calon pembayang yang mungkin berkeping-keping. Jika anda mempunyai nilai baharu atau ujian berbeza, sila
hantarkan kepada saya...

Menimpa Pilihan
Sekiranya anda membuat a config.over fail dalam direktori peringkat atas, Konfigurasi akan bertanya kepada anda jika anda
ingin memuatkannya untuk mengatasi nilai lalai. Ini dilakukan sebelum penciptaan
config.sh fail, jadi ia memberi anda peluang untuk menampal nilai yang disimpan di sana.

Ini berbeza daripada pendekatan pembayang kerana ia adalah fail tempatan, iaitu pengguna
bebas untuk mencipta untuk kegunaan sendiri. Anda tidak sepatutnya menyediakan fail sedemikian sendiri, tetapi biarkan fail tersebut
pengguna tahu tentang kemungkinan ini.

Konfigurasi Pilihan
. Konfigurasi skrip boleh dipanggil dengan beberapa pilihan yang ditentukan pada baris arahan, untuk
ubah suai sedikit kelakuannya. Berikut ialah pilihan yang dibenarkan:

-d Gunakan lalai untuk semua jawapan.

-e Teruskan tanpa mempersoalkan pengeluaran config.sh.

-f fail Gunakan fail yang ditentukan sebagai konfigurasi lalai. Jika suis ini tidak digunakan,
konfigurasi diambil daripada config.sh, apabila hadir.

-h Cetak mesej bantuan dan keluar.

-r Gunakan semula nilai simbol C jika boleh. Ini akan melangkau yang mahal nm lambang
perahan. Jika digunakan kali pertama (tanpa fail konfigurasi sebelumnya),
Konfigurasi akan cuba menyusun dan menghubungkan program kecil untuk mengetahui
kehadiran simbol, atau ketiadaannya.

-s Mod senyap. Hanya rentetan yang dicetak pada deskriptor fail #4 akan dilihat pada
skrin (itulah mesej penting). Ia tidak boleh dimatikan sepenuhnya
sebarang output, tetapi anda boleh menggunakan 'Konfigurasi -ders > / dev / null 2> & 1' untuk kenyang
batch run tanpa output dan tiada interaksi pengguna diperlukan.

-D simbol=nilai
Pra-takrif lambang untuk menanggung yang ditentukan nilai. Ia juga boleh menggunakan '-D
lambang' yang akan menggunakan nilai lalai 'define'.

-E Berhenti pada akhir soalan konfigurasi, selepas menghasilkan a
config.sh. Ini tidak akan melakukan apa-apa 'membuat bergantung' atau .SH pengekstrakan fail.

-K Pengguna yang berpengetahuan. Apabila anda menggunakan pilihan ini, anda tahu apa yang anda lakukan dan
oleh itu config.sh fail akan sentiasa dikendalikan seolah-olah ia bertujuan untuk menjadi
digunakan semula, walaupun ia mungkin telah dijana pada sistem asing. Ia juga
menghalang pengguguran apabila Konfigurasi mengesan pengkompil C yang tidak boleh digunakan atau set yang salah
daripada bendera C. Pintasan selanjutnya mungkin dihidupkan oleh pilihan ini juga dalam
masa hadapan. Pilihan ini didokumenkan dalam Konfigurasi mesej penggunaan, untuk mengingatkan kita
tentang kewujudannya, tetapi penerangan yang diberikan diharap cukup samar.
:-)

-O Benarkan nilai yang ditentukan melalui a -D or -U untuk mengatasi tetapan daripada mana-mana yang dimuatkan
fail konfigurasi. Ini bukan tingkah laku lalai kerana kehendak mengatasi
tidak boleh disebarkan kepada pembolehubah yang diperoleh daripada yang anda ubah sekarang.
Sememangnya, tanpa -O, tetapan hanya dilakukan apabila tiada fail konfigurasi
dimuatkan, yang selamat kerana pembolehubah terbitan belum dikira lagi...

-S Lakukan penggantian pembolehubah pada semua fail .SH. Anda boleh menggabungkannya dengan
-f beralih untuk menyebarkan sebarang konfigurasi yang anda suka.

-U simbol=
Pra-set lambang untuk menanggung nilai kosong. Ia juga boleh menggunakan '-U lambang'
yang akan ditetapkan lambang untuk 'undef'.

-V Cetak nombor versi metaconfig yang menjana ini Konfigurasi skrip
dan keluar.

Berlari alam Sekitar
Apabila bermula, Konfigurasi mewujudkan tempatan UU direktori dan berjalan dari sana. Direktori
dialih keluar apabila Konfigurasi tamat, tetapi ini bermakna anda mesti menjalankan skrip dari tempat di mana
anda boleh menulis, iaitu bukan daripada sistem fail baca sahaja.

Anda boleh lari Konfigurasi dari jauh, seperti dalam:

../package/Configure

untuk mengkonfigurasi sumber yang tidak terdapat secara setempat. Semua fail yang dihasilkan akan dimasukkan
direktori tempat anda menjalankan skrip. Sihir ini dilakukan terima kasih kepada src.U
unit, yang menetapkan $src and $rsrc pembolehubah untuk menunjuk kepada sumber pakej. Itu
laluan penuh atau relatif, bergantung kepada sama ada Konfigurasi telah dipanggil melalui penuh atau
laluan relatif.

Dari dalam UU subdirektori, anda boleh gunakan $rsrc untuk mengakses fail sumber (unit
merujuk kepada pembayang pautan fail sumber hendaklah sentiasa menggunakan mekanisme ini dan tidak menganggapnya
fail terdapat dalam direktori induk). Semua Makefiles harus menggunakan pembolehubah $src
sebagai penunjuk kepada sumber dari bahagian atas direktori binaan (di mana Konfigurasi dijalankan),
sama ada secara langsung atau melalui tetapan VPATH.

Semasa berlari Konfigurasi dari jauh, fail .SH diekstrak dalam direktori binaan, bukan
dalam pokok sumber. Walau bagaimanapun, ia memerlukan beberapa jenis a membuat sokongan untuk dapat menyusun
perkara dalam direktori binaan manakala sumber terletak di tempat lain.

Menggunakan sihir Takrifan semula
Dengan menggunakan -M suis, beberapa pemetaan semula ajaib mungkin berlaku dalam a confmagic.h
fail. Fail itu perlu disertakan selepas config.h, sudah tentu, tetapi juga selepas semua
lain yang diperlukan termasuk fail. Iaitu:

#include "config.h"
...
... lain kemasukan ...
...
#include "confmagic.h"

Biasanya, confmagic.h akan cuba memetakan semula bcopy() on memcpy() jika tidak bcopy() is
tersedia secara tempatan, atau mengubah vfork ke dalam garpu apabila perlu, justeru menjadikannya tidak berguna untuk
bersusah payah tentang HAS_VFORK simbol.

Keajaiban konfigurasi ini didokumenkan dalam fail Glosari.

Unit Templates
Terdapat satu set templat unit dalam metaconfig direktori sumber, yang bertujuan untuk
digunakan oleh program (belum ditulis) untuk menghasilkan unit baharu dengan cepat untuk pelbagai jenis
situasi. Tiada dokumentasi untuk projek yang belum selesai ini, tetapi saya fikir saya akan menyebutnya
dalam halaman manual sekiranya anda ingin melakukannya sendiri dan kemudian menyumbangnya...

PENGARANG


Larry Wall[e-mel dilindungi]> untuk versi 2.0.
Harlan Stenn[e-mel dilindungi]> untuk sambungan unit penting.
Raphael Manfredi[e-mel dilindungi]>.
Ramai lagi penyumbang untuk metaconfig unit. Lihat fail kredit untuk senarai.

Gunakan metaconfig dalam talian menggunakan perkhidmatan onworks.net


Pelayan & Stesen Kerja Percuma

Muat turun apl Windows & Linux

Arahan Linux

Ad