ນີ້ແມ່ນ imake ຄໍາສັ່ງທີ່ສາມາດດໍາເນີນການໄດ້ໃນ OnWorks ຜູ້ໃຫ້ບໍລິການໂຮດຕິ້ງຟຣີໂດຍໃຊ້ຫນຶ່ງໃນຫຼາຍສະຖານີເຮັດວຽກອອນໄລນ໌ຂອງພວກເຮົາເຊັ່ນ Ubuntu Online, Fedora Online, Windows online emulator ຫຼື MAC OS online emulator
ໂຄງການ:
NAME
imake - C preprocessor interface ກັບ make utility
ສະຫຼຸບສັງລວມ
ຂ້ອຍເຮັດ [ -Dກໍານົດ ] [ -Idir ] [ -Uກໍານົດ ] [ -Tແມ່ແບບ ] [ -f ຊື່ເອກະສານ ] [ -C ຊື່ເອກະສານ ] [
-s ຊື່ເອກະສານ ] [ -e ] [ -v ]
ລາຍລະອຽດ
ຂ້ອຍເຮັດ ຖືກນໍາໃຊ້ເພື່ອສ້າງ Makefiles ຈາກແມ່ແບບ, ຊຸດຂອງ cpp ຟັງຊັນມະຫາພາກ, ແລະ ກ
ໄຟລ໌ປ້ອນຂໍ້ມູນຕໍ່ໄດເຣັກທໍຣີເອີ້ນວ່າ Imakefile. ນີ້ອະນຸຍາດໃຫ້ມີການຂຶ້ນກັບເຄື່ອງຈັກ (ເຊັ່ນ:
ຕົວເລືອກ compiler, ຊື່ຄໍາສັ່ງສະຫຼັບ, ແລະພິເສດ ເຮັດໃຫ້ ກົດລະບຽບ) ທີ່ຈະເກັບຮັກສາໄວ້ແຍກຕ່າງຫາກ
ຈາກລາຍລະອຽດຂອງລາຍການຕ່າງໆທີ່ຈະສ້າງຂຶ້ນ.
OPTIONS
ຕົວເລືອກແຖວຄໍາສັ່ງຕໍ່ໄປນີ້ອາດຈະຖືກສົ່ງໄປຫາ ຂ້ອຍເຮັດ:
-Dກໍານົດ
ທາງເລືອກນີ້ແມ່ນຜ່ານໂດຍກົງກັບ cpp. ໂດຍປົກກະຕິມັນຖືກນໍາໃຊ້ເພື່ອກໍານົດ directory-
ຕົວແປສະເພາະ. ຕົວຢ່າງ, ລະບົບ X Window ໃຊ້ທຸງນີ້ເພື່ອກໍານົດ TOPDIR
ກັບຊື່ຂອງໄດເລກະທໍລີທີ່ມີສ່ວນເທິງຂອງການແຈກຢາຍຫຼັກແລະ
CurdIR ກັບຊື່ຂອງໄດເລກະທໍລີປະຈຸບັນ, ທຽບກັບດ້ານເທິງ.
-Iລະບົບ
ທາງເລືອກນີ້ແມ່ນຜ່ານໂດຍກົງກັບ cpp. ມັນຖືກນໍາໃຊ້ໂດຍທົ່ວໄປເພື່ອຊີ້ໃຫ້ເຫັນເຖິງ
ໄດເລກະທໍລີທີ່ ຂ້ອຍເຮັດ ໄຟລ໌ແມ່ແບບ ແລະການຕັ້ງຄ່າອາດຈະຖືກພົບເຫັນ.
-Uກໍານົດ
ທາງເລືອກນີ້ແມ່ນຜ່ານໂດຍກົງກັບ cpp. ໂດຍປົກກະຕິມັນຖືກນໍາໃຊ້ເພື່ອບໍ່ຕັ້ງຕົວແປ
ເມື່ອ debugging ຂ້ອຍເຮັດ ໄຟລ໌ການຕັ້ງຄ່າ.
-Tແມ່ແບບ
ຕົວເລືອກນີ້ລະບຸຊື່ຂອງໄຟລ໌ແມ່ແບບແມ່ແບບ (ເຊິ່ງປົກກະຕິແລ້ວ
ຕັ້ງຢູ່ໃນໄດເລກະທໍລີທີ່ລະບຸໄວ້ກັບ -I) ນໍາໃຊ້ໂດຍ cpp. ຄ່າເລີ່ມຕົ້ນແມ່ນ
Imake.tmpl.
-f ຊື່ເອກະສານ
ຕົວເລືອກນີ້ລະບຸຊື່ຂອງໄຟລ໌ປ້ອນຂໍ້ມູນຕໍ່ໄດເຣັກທໍຣີ. ຄ່າເລີ່ມຕົ້ນແມ່ນ
Imakefile.
-C ຊື່ເອກະສານ
ຕົວເລືອກນີ້ລະບຸຊື່ຂອງໄຟລ໌ .c ທີ່ສ້າງຂຶ້ນໃນປະຈຸບັນ
ໄດເລກະທໍລີ. ຄ່າເລີ່ມຕົ້ນແມ່ນ Imakefile.c.
-s ຊື່ເອກະສານ
ທາງເລືອກນີ້ລະບຸຊື່ຂອງ ເຮັດໃຫ້ ໄຟລ໌ຄໍາອະທິບາຍທີ່ຈະສ້າງຂຶ້ນແຕ່
ເຮັດໃຫ້ ບໍ່ຄວນຖືກຮຽກຮ້ອງ. ຖ້າ ຊື່ເອກະສານ ແມ່ນ dash (-), ຜົນຜະລິດແມ່ນລາຍລັກອັກສອນ
to stdout. ຄ່າເລີ່ມຕົ້ນແມ່ນເພື່ອສ້າງ, ແຕ່ບໍ່ແມ່ນ execute, a makefile.
-e ທາງເລືອກນີ້ຊີ້ໃຫ້ເຫັນເຖິງ ຂ້ອຍເຮັດ ຄວນປະຕິບັດການຜະລິດໄດ້ makefile. ໄດ້
ຄ່າເລີ່ມຕົ້ນແມ່ນເພື່ອປ່ອຍໃຫ້ຜູ້ໃຊ້ນີ້.
-v ທາງເລືອກນີ້ຊີ້ບອກວ່າ ຂ້ອຍເຮັດ ຄວນພິມ cpp ເສັ້ນຄໍາສັ່ງວ່າມັນແມ່ນ
ການນໍາໃຊ້ເພື່ອສ້າງ makefile.
ວິທີການ IT WORKS
ຂ້ອຍເຮັດ invokes cpp ກັບໃດໆ -I or -D ທຸງຜ່ານເສັ້ນຄໍາສັ່ງແລະ passes ຊື່
ຂອງໄຟລ໌ທີ່ມີ 3 ແຖວຕໍ່ໄປນີ້:
#define IMAKE_TEMPLATE "Imake.tmpl"
#ກຳນົດ INCLUDE_IMAKEFILE
#ລວມທັງ IMAKE_TEMPLATE
ບ່ອນທີ່ Imake.tmpl ແລະ Imakefile ອາດຈະຖືກ overridden ໂດຍ -T ແລະ -f ທາງເລືອກຄໍາສັ່ງ,
ຕາມລໍາດັບ.
ປົກກະຕິແລ້ວ IMAKE_TEMPLATE ຈະອ່ານໃນໄຟລ໌ທີ່ບັນຈຸພາຣາມິເຕີທີ່ຂຶ້ນກັບເຄື່ອງຈັກ
(ລະບຸເປັນ cpp symbols), ໄຟລ໌ພາລາມິເຕີສະເພາະຂອງເວັບໄຊ, ໄຟລ໌ກໍານົດຕົວແປ, a
ໄຟລ໌ທີ່ປະກອບດ້ວຍ cpp ຟັງຊັນມະຫາພາກສໍາລັບການສ້າງ ເຮັດໃຫ້ ກົດລະບຽບ, ແລະສຸດທ້າຍ Imakefile
(ລະບຸໂດຍ INCLUDE_IMAKEFILE) ໃນໄດເລກະທໍລີປະຈຸບັນ. ໄດ້ Imakefile ໃຊ້ມະຫາພາກ
ຫນ້າທີ່ຊີ້ບອກສິ່ງທີ່ເປົ້າຫມາຍຄວນຈະຖືກສ້າງຂຶ້ນ; ຂ້ອຍເຮັດ ໃຊ້ ເວ ລາ ດູ ແລ ຂອງ ການ ສ້າງ
ກົດລະບຽບທີ່ເຫມາະສົມ.
ຂ້ອຍເຮັດ ໄຟລ໌ການຕັ້ງຄ່າມີສອງປະເພດຂອງຕົວແປ, imake ຕົວແປແລະເຮັດໃຫ້
ຕົວແປ. ຕົວແປ imake ຖືກຕີຄວາມໂດຍ cpp ເມື່ອ ຂ້ອຍເຮັດ ແມ່ນແລ່ນ. ໂດຍສົນທິສັນຍາ
ພວກເຂົາເຈົ້າແມ່ນກໍລະນີປະສົມ. ຕົວແປທີ່ເຮັດໃຫ້ຖືກຂຽນໃສ່ໃນ makefile ສຳ ລັບພາຍຫລັງ
ການຕີຄວາມໂດຍ ເຮັດໃຫ້. ໂດຍສົນທິສັນຍາເຮັດໃຫ້ຕົວແປແມ່ນຕົວພິມໃຫຍ່.
ໄຟລ໌ກົດລະບຽບ (ປົກກະຕິແລ້ວມີຊື່ Imake.rules ໃນບັນຊີການຕັ້ງຄ່າ) ປະກອບດ້ວຍ a
ຊະນິດຂອງ cpp ຟັງຊັນມະຫາພາກທີ່ຖືກກໍານົດໄວ້ຕາມເວທີປະຈຸບັນ.
ຂ້ອຍເຮັດ ແທນທີ່ການປະກົດຕົວຂອງສະຕຣິງ ``@@'' ດ້ວຍແຖວໃໝ່ເພື່ອອະນຸຍາດໃຫ້ມາໂຄຣໄດ້
ສ້າງຫຼາຍກ່ວາຫນຶ່ງແຖວຂອງ ເຮັດໃຫ້ ກົດລະບຽບ. ສໍາລັບຕົວຢ່າງ, ມະຫາພາກ
#define program_target(ໂຄງການ, objlist) @@\
ໂຄງການ: objlist @@\
$(CC) -o $@ objlist $(LDFLAGS)
ເມື່ອເອີ້ນດ້ວຍ program_target(foo, foo1.o foo2.o) ຈະຂະຫຍາຍໄປ
foo: foo1.o foo2.o
$(CC) -o $@ foo1.o foo2.o $(LDFLAGS)
ຂ້ອຍເຮັດ ຍັງແທນທີ່ການປະກົດຕົວຂອງຄຳວ່າ ``XCOMM'' ດ້ວຍຕົວອັກສອນ ``#'' ເປັນ
ອະນຸຍາດໃຫ້ວາງຄໍາຄິດເຫັນໃນ Makefile ໂດຍບໍ່ມີການເຮັດໃຫ້ເກີດຄວາມຜິດພາດ "ຄໍາສັ່ງທີ່ບໍ່ຖືກຕ້ອງ" ຈາກ
ໂປເຊດເຊີກ່ອນ.
ສະລັບສັບຊ້ອນບາງ ຂ້ອຍເຮັດ macro ຕ້ອງການສ້າງ ເຮັດໃຫ້ ຕົວແປທ້ອງຖິ່ນຕໍ່ກັບແຕ່ລະ invocation ຂອງ
ມະຫາພາກ, ເລື້ອຍໆເນື່ອງຈາກວ່າມູນຄ່າຂອງພວກມັນຂຶ້ນກັບພາລາມິເຕີທີ່ສົ່ງໄປຫາມະຫາພາກ. ດັ່ງກ່າວ
ຕົວແປສາມາດຖືກສ້າງຂື້ນໂດຍການໃຊ້ an ຂ້ອຍເຮັດ ຕົວແປຂອງແບບຟອມ XVARdefn, ບ່ອນທີ່ n ເປັນ
ຕົວເລກດຽວ. ເປັນເອກະລັກ ເຮັດໃຫ້ ຕົວປ່ຽນແປງຈະຖືກປ່ຽນແທນ. ການປະກົດຕົວຕໍ່ມາຂອງ
ຕົວແປ ການໃຊ້ XVARn ຈະຖືກແທນທີ່ໂດຍຕົວແປທີ່ສ້າງຂຶ້ນໂດຍທີ່ສອດຄ້ອງກັນ XVARdefn.
ກ່ຽວກັບລະບົບທີ່ cpp ຫຼຸດຜ່ອນຫຼາຍແຖບ ແລະຊ່ອງຫວ່າງໃສ່ຊ່ອງດຽວ, ຂ້ອຍເຮັດ ຄວາມພະຍາຍາມທີ່ຈະ
ເອົາແທັບທີ່ຈໍາເປັນ (ເຮັດໃຫ້ ແມ່ນ picky ຫຼາຍກ່ຽວກັບຄວາມແຕກຕ່າງລະຫວ່າງແຖບແລະ
ຊ່ອງ). ສໍາລັບເຫດຜົນນີ້, ຈໍ້າສອງເມັດ (:) ໃນແຖວຄໍາສັ່ງຕ້ອງຖືກນໍາຫນ້າດ້ວຍ backslash
(\).
ໃຊ້ ກັບ ການ X WINDOW SYSTEM
ລະບົບ X Window ໃຊ້ ຂ້ອຍເຮັດ ເພີ່ມຂຶ້ນໂດຍຜ່ານການປ່ອຍ X11R6.9, ສໍາລັບທັງສອງເຕັມ
ກໍ່ສ້າງພາຍໃນຕົ້ນໄມ້ແຫຼ່ງແລະຊອບແວພາຍນອກ. ນັບຕັ້ງແຕ່ X ໄດ້ຍ້າຍໄປ GNU autoconf
ແລະ automake ສໍາລັບລະບົບການກໍ່ສ້າງຂອງຕົນໃນ X11R7.0 ແລະການປ່ອຍຕໍ່ມາ, ແຕ່ຍັງຄົງຮັກສາ imake
ສໍາລັບການກໍ່ສ້າງໂຄງການຊອບແວພາຍນອກທີ່ມີຢູ່ແລ້ວທີ່ຍັງບໍ່ທັນໄດ້ປ່ຽນໃຈເຫລື້ອມໃສ.
ດັ່ງທີ່ໄດ້ກ່າວມາຂ້າງເທິງ, ສອງຕົວແປພິເສດ, TOPDIR ແລະ CurdIR, ຖືກກໍານົດເພື່ອເຮັດໃຫ້ການອ້າງອີງ
ໄຟລ໌ທີ່ໃຊ້ຊື່ເສັ້ນທາງທີ່ກ່ຽວຂ້ອງງ່າຍຂຶ້ນ. ຕົວຢ່າງ, ຄໍາສັ່ງຕໍ່ໄປນີ້ແມ່ນຖືກສ້າງຂຶ້ນ
ອັດຕະໂນມັດເພື່ອສ້າງ makefile ໃນລະບົບ lib/X/ (ກ່ຽວກັບດ້ານເທິງຂອງ
ແຫຼ່ງ):
% ../.././config/imake -I../.././config \
-DTOPDIR=../../. -DCURDIR=./lib/X
ເມື່ອສ້າງໂຄງການ X ຢູ່ນອກຕົ້ນໄມ້ແຫຼ່ງ, ສັນຍາລັກພິເສດ ຕິດຕັ້ງແລ້ວ ຖືກ ກຳ ນົດ
ແລະ TOPDIR ແລະ CurdIR ຖືກລະເວັ້ນ. ຖ້າຫາກວ່າໄຟລ໌ການຕັ້ງຄ່າໄດ້ຖືກຕ້ອງ
ຕິດຕັ້ງ, script xmkmf(1) ອາດຈະຖືກນໍາໃຊ້.
ປັດໄຈນໍາເຂົ້າ ເອກະສານ
ນີ້ແມ່ນບົດສະຫຼຸບຂອງໄຟລ໌ທີ່ອ່ານໂດຍ ຂ້ອຍເຮັດ ຕາມທີ່ໃຊ້ໂດຍ X. indentation ສະແດງໃຫ້ເຫັນສິ່ງທີ່
ໄຟລ໌ປະກອບມີໄຟລ໌ອື່ນໃດ.
ຕົວແປທົ່ວໄປ imake.tmpl
site.def ສະເພາະເວັບໄຊທ໌, BeforeVendorCF ກໍານົດ
*.cf ສະເພາະເຄື່ອງ
*Lib.rules ກົດລະບຽບຫ້ອງສະຫມຸດແບ່ງປັນ
site.def ສະຖານທີ່ສະເພາະ, AfterVendorCF ກໍານົດ
ກົດລະບຽບ imake.rules
ຕົວແປສະເພາະ Project.tmpl X
*Lib.tmpl ແບ່ງປັນຕົວແປຫ້ອງສະໝຸດ
Imakefile
ກົດລະບຽບຫ້ອງສະຫມຸດ Library.tmp
ກົດລະບຽບຂອງເຄື່ອງແມ່ຂ່າຍຂອງ server.tmp
Threads.tmpl ກົດລະບຽບຫຼາຍກະທູ້
ໃຫ້ສັງເກດວ່າ site.def ໄດ້ຮັບການລວມທັງສອງຄັ້ງ, ເມື່ອກ່ອນທີ່ຈະ *.cf ໄຟລ໌ແລະຄັ້ງດຽວຫຼັງຈາກນັ້ນ.
ເຖິງແມ່ນວ່າການປັບແຕ່ງເວັບໄຊທ໌ສ່ວນໃຫຍ່ຄວນຈະຖືກລະບຸໄວ້ຫຼັງຈາກ *.cf ໄຟລ໌, ບາງ, ເຊັ່ນ:
ທາງເລືອກຂອງ compiler, ຈໍາເປັນຕ້ອງໄດ້ລະບຸໄວ້ກ່ອນ, ເນື່ອງຈາກວ່າການຕັ້ງຄ່າຕົວປ່ຽນແປງອື່ນໆອາດຈະ
ຂຶ້ນກັບເຂົາເຈົ້າ.
ຄັ້ງທໍາອິດ site.def ແມ່ນລວມ, ຕົວແປ BeforeVendorCF ຖືກກໍານົດ, ແລະ
ຄັ້ງທີສອງ, ຕົວແປ AfterVendorCF ຖືກກໍານົດ. ລະຫັດທັງໝົດໃນ site.def ຄວນຈະຢູ່ພາຍໃນ
ເປັນ #ifdef ສໍາລັບຫນຶ່ງໃນສັນຍາລັກເຫຼົ່ານີ້.
ໃຊ້ imake ອອນໄລນ໌ໂດຍໃຊ້ບໍລິການ onworks.net