Documentation for a newer release is available. View Latest

ເຄື່ອງມືນັກພັດທະນາ

GNU make 4.3

GNU make 4.3 ລວມມີການແກ້ໄຂບັກ, ຄຸນສົມບັດໃໝ່ ແລະ ການປັບປຸງປະສິດທິພາບຫຼາຍຢ່າງ.

ຄວາມບໍ່ເຂົ້າກັນແບບຍ້ອນຫຼັງ

ແພັດຄວາມເຂົ້າກັນໄດ້ສໍາລັບ make ເວີຊັນ 3.8 ຖືກຖອດອອກໃນລຸ້ນນີ້, ເຊິ່ງເຮັດໃຫ້ make ຂອງ Fedora ຄືກັນກັບດີສໂຕຣ (distros) ອື່ນໆ.

ເຈົ້າຂອງແພັກເກດທີ່ເພິ່ງພາຄຸນສົມບັດຂອງ makefile ສະເພາະເວີຊັນເກົ່າຂອງ GNU make (ລວມທັງແພັດຄວາມເຂົ້າກັນໄດ້ສໍາລັບ 3.8 ທີ່ພວກເຮົາກໍາລັງຕັດອອກ) ອາດຈະເກີດ FTBFS ແລະ ຈໍາເປັນຕ້ອງປັບປຸງ Makefiles ຂອງພວກເຂົາ. ແພັກເກດທີ່ຖືກບິລ (build) ກ່ອນການອັບເກຣດນີ້ຈະບໍ່ໄດ້ຮັບຜົນກະທົບ.

ຄວາມບໍ່ເຂົ້າກັນແບບຍ້ອນຫຼັງສະເພາະ:

* ຄໍາເຕືອນ: ຄວາມບໍ່ເຂົ້າກັນແບບຍ້ອນຫຼັງ!
  ເຄື່ອງໝາຍສີ່ຫຼ່ຽມ (#) ທີ່ປະກົດຢູ່ພາຍໃນການອ້າງອີງມາໂຄຣ ຫຼື ການຮຽກໃຊ້ຟັງຊັນ
  ຈະບໍ່ຖືກນັບວ່າເປັນຄໍາອະທິບາຍ (comment) ອີກຕໍ່ໄປ ແລະ ບໍ່ຄວນໃສ່ backslashes ເພື່ອຫຼົບຫຼີກ (escape):
  ດັ່ງນັ້ນການຮຽກໃຊ້ເຊັ່ນ:
    foo := $(shell echo '#')
  ແມ່ນຖືກຕ້ອງ. ກ່ອນໜ້ານີ້ເຄື່ອງໝາຍສີ່ຫຼ່ຽມຈໍາເປັນຕ້ອງໄດ້ຫຼົບຫຼີກ, ຕົວຢ່າງ:
    foo := $(shell echo '\#')
  ຕອນນີ້ແບບຫຼັງນີ້ຈະກາຍເປັນ "\#". ຖ້າທ່ານຕ້ອງການຂຽນ makefiles
  ໃຫ້ໃຊ້ໄດ້ກັບທັງສອງເວີຊັນ, ໃຫ້ກໍານົດເຄື່ອງໝາຍສີ່ຫຼ່ຽມໃສ່ຕົວປ່ຽນ:
    H := \#
    foo := $(shell echo '$H')
  ສິ່ງນີ້ເຄີຍຖືກອ້າງວ່າໄດ້ແກ້ໄຂແລ້ວໃນ 3.81, ແຕ່ຍັງບໍ່ທັນແກ້ໄຂຍ້ອນເຫດຜົນບາງຢ່າງ.
  ເພື່ອກວດສອບການປ່ຽນແປງນີ້ ໃຫ້ຄົ້ນຫາ 'nocomment' ໃນຕົວປ່ຽນ .FEATURES.

* ຄໍາເຕືອນ: ຄວາມບໍ່ເຂົ້າກັນແບບຍ້ອນຫຼັງ!
  ກ່ອນໜ້ານີ້ການຕໍ່ທ້າຍໂດຍໃຊ້ '+=' ໃສ່ຕົວປ່ຽນທີ່ວ່າງເປົ່າ ຈະສົ່ງຜົນໃຫ້ຄ່າ
  ມີການຂຶ້ນຕົ້ນດ້ວຍຍະຫວ່າງ. ຕອນນີ້ຍະຫວ່າງເລີ່ມຕົ້ນຈະຖືກເພີ່ມເຂົ້າກໍຕໍ່ເມື່ອຕົວປ່ຽນນັ້ນ
  ມີຄ່າຢູ່ແລ້ວເທົ່ານັ້ນ. ໃນທໍານອງດຽວກັນ, ການຕໍ່ທ້າຍດ້ວຍຂໍ້ຄວາມວ່າງເປົ່າກໍຈະບໍ່
  ມີການເພີ່ມຍະຫວ່າງຕໍ່ທ້າຍ.

ຄຸນສົມບັດໃໝ່

  • ກຸ່ມເປົ້າໝາຍທີ່ກໍານົດຢ່າງຊັດເຈນ (Grouped explicit targets) ກົດເກນຮູບແບບ (Pattern rules) ມີຄວາມສາມາດໃນການສ້າງຫຼາຍເປົ້າໝາຍດ້ວຍການຮຽກໃຊ້ເຮຊີພີ (recipe) ພຽງຄັ້ງດຽວມາໂດຍຕະຫຼອດ. ຕອນນີ້ສາມາດປະກາດໄດ້ແລ້ວວ່າ ກົດເກນທີ່ຊັດເຈນ (explicit rule) ສາມາດສ້າງໄດ້ຫຼາຍເປົ້າໝາຍດ້ວຍການຮຽກໃຊ້ພຽງຄັ້ງດຽວ. ເພື່ອໃຊ້ສິ່ງນີ້, ໃຫ້ປ່ຽນເຄື່ອງໝາຍ : ເປັນ &: ໃນກົດເກນ. ເພື່ອກວດສອບຄຸນສົມບັດນີ້ ໃຫ້ຄົ້ນຫາ grouped-target ໃນຕົວປ່ຽນພິເສດ .FEATURES.

  • ຕົວປ່ຽນ .EXTRA_PREREQS ຄໍາສັບໃນຕົວປ່ຽນນີ້ຖືກຖືວ່າເປັນເງື່ອນໄຂເບື້ອງຕົ້ນ (prerequisites) ຂອງເປົ້າໝາຍ ແຕ່ພວກມັນຈະບໍ່ຖືກເພີ່ມເຂົ້າໃນຄ່າຕົວປ່ຽນອັດຕະໂນມັດໃດໆ ເມື່ອມີການຂະຫຍາຍເຮຊີພີ (recipe). ຕົວປ່ຽນນີ້ສາມາດເປັນໄດ້ທັງແບບທົ່ວໄປ (ໃຊ້ກັບທຸກເປົ້າໝາຍ) ຫຼື ຕົວປ່ຽນສະເພາະເປົ້າໝາຍ. ເພື່ອກວດສອບຄຸນສົມບັດນີ້ ໃຫ້ຄົ້ນຫາ extra-prereqs ໃນຕົວປ່ຽນພິເສດ .FEATURES.

  • ຕອນນີ້ Makefiles ສາມາດກໍານົດຕົວເລືອກ -j ໃນຕົວປ່ຽນ MAKEFLAGS ຂອງພວກເຂົາໄດ້ ແລະ ສິ່ງນີ້ຈະເຮັດໃຫ້ make ເປີດໃຊ້ໂໝດການເຮັດວຽກແບບຂະໜານ (parallelism) ນັ້ນ.

  • GNU make ຈະໃຊ້ posix_spawn() ໃນລະບົບທີ່ມີໃຫ້ໃຊ້. ຖ້າທ່ານຕ້ອງການໃຊ້ fork/exec ເຖິງແມ່ນວ່າໃນລະບົບທີ່ມີ posix_spawn() ກໍຕາມ, ທ່ານສາມາດໃຊ້ຕົວເລືອກ --disable-posix-spawn ໃນການກໍານົດຄ່າ (configure).

  • ຂໍ້ຄວາມສະແດງຂໍ້ຜິດພາດທີ່ສະແດງອອກມາເມື່ອມີການຮຽກໃຊ້ຄໍາສັ່ງທີ່ບໍ່ມີຢູ່ ໄດ້ຖືກປັບປຸງໃຫ້ສະອາດ ແລະ ເປັນໄປໃນທາງດຽວກັນ.

  • ໄດ້ມີການເພີ່ມຕົວເລືອກໃໝ່ --no-silent, ເຊິ່ງຈະຍົກເລີກຜົນຂອງແຟລັກ (flag) -s/--silent/--quiet.

  • ໄດ້ມີການເພີ່ມຕົວເລືອກໃໝ່ -E ເພື່ອເປັນຊື່ຫຍໍ້ສໍາລັບ --eval.

  • ເຮັດວຽກຮ່ວມກັບ GNU libc ແລະ musl C runtime libraries ລຸ້ນໃໝ່ໄດ້.

ເບິ່ງ ການປະກາດເປີດຕົວຈາກຕົ້ນທາງ ສໍາລັບຂໍ້ມູນລະອຽດເພີ່ມເຕີມກ່ຽວກັບລຸ້ນນີ້.

ແກ້ໄຂບັກແລ້ວ

ລາຍຊື່ທັງໝົດຂອງບັກທີ່ຖືກແກ້ໄຂໃນເວີຊັນນີ້ ສາມາດເບິ່ງໄດ້ທີ່ນີ້ make - Bugs