Membatasi GNU Make Make to POSIX Make behaviour


12

Adakah cara yang diketahui untuk membuat Linux makemenolak penggunaan GNU yang tidak diinginkan - Membuat ekstensi spesifik di Makefile saat mengedit atau menggunakan Makefile lain di Linux? Maksud saya, membatasi GNU Make Make untuk berperilaku seperti yang makeditentukan dalam POSIX dan menolak setiap GNU Make Membuat ekstensi spesifik?

The .POSIXsasaran khusus tidak cukup, menurut “ 4,9 Khusus Built-in Nama Target (gnu.org) ”. Halaman manual tidak menyebutkan opsi baris perintah untuk ini.

Menggunakan makeutilitas lain mungkin merupakan opsi.

- Pembaruan 2018-10-19 -

Saya masih belum menemukan jawaban langsung untuk pertanyaan saya, tetapi di sini setidaknya ada dokumen tentang masalah ini, dokumen yang tidak ada pada saat saya memiliki pertanyaan ini:  Tutorial tentang Makefiles Portabel (nullprogram.com) .


Melihat daftar ini , tidak jelas bahwa ada atau pernah ada POSIX ketat hanya membuat - jadi mungkin lebih masuk akal untuk memulai dengan makeyang dimaksudkan untuk digunakan dengan "Makefile lain" yang dimaksud. Anda juga telah mengatakan bahwa " .POSIXtarget GNU tidak cukup, menurut" pembacaan beberapa dokumentasi Anda, tetapi Anda belum menunjukkan ini dengan kasus yang sebenarnya, yang sedikit masalah XY .
goldilocks

@goldilocks, X adalah tentang memeriksa batasan yang ingin saya tempati (untuk mengedit dan memodifikasi) karena kurangnya penguasaan spesifisitas GNU-Make dan untuk membantu saya menyadari keberadaan beberapa kekhususan (ketika ada). Pemeriksaan mata rawan kesalahan, tidak dapat dimekanisasi, dan saya lebih suka menghindari filter grep / sed / awk rawan buatan rumah untuk memeriksa dan menarik perhatian saya.
Hibou57

Aku bukan penyihir jagoan, tapi bukankah lebih baik menanyakannya langsung? (Jika demikian, Stack Overflow mungkin merupakan tempat yang lebih baik untuk itu.)
goldilocks

Kamu mungkin benar. Ngomong-ngomong, setelah saya mempostingnya, saya pertama kali menghapus kemudian membatalkan penghapusan pertanyaan ini (tidak yakin tempat itu). Saya nanti dapat meminta kembali pada Stack Overflow seperti yang Anda sarankan. Terima kasih atas perhatianmu.
Hibou57

Jawaban:


6

Saya cukup yakin bahwa tidak ada cara untuk menonaktifkan ekstensi membuat GNU. The .POSIXTarget meningkatkan kompatibilitas tetapi tidak ekstensi tidak menonaktifkan kompatibel seperti fungsi, milik dot target, %pola target, dll

Saya tidak tahu apakah ada implementasi make yang melekat pada fitur POSIX. Misalnya MINIX, Solaris, OpenBSD semuanya memiliki ekstensi sendiri. Anda setidaknya bisa mencoba untuk membangun program Anda dengan empat implementasi ini (dengan asumsi bahwa program Anda memang membangun pada semua platform ini), yang akan memberi Anda jaminan portabilitas yang cukup baik dalam praktiknya. Tambahkan Windows dengan makeutilitas dari Visual Studio, plus port dari beberapa alat shell Unix, jika Anda dapat menggunakan OS yang tidak bebas (saya pikir ada versi gratis VS yang cukup).


3
Di Debian Linux, saya menggunakan pmakeuntuk menguji portabilitas makefile saya. Itu mengklaim itu membuat rasa dari NetBSD. (Dalam versi Debian yang lebih baru bmake.)
Palec
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.