Adakah cara yang diketahui untuk membuat Linux make
menolak 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 make
ditentukan dalam POSIX dan menolak setiap GNU Make Membuat ekstensi spesifik?
The .POSIX
sasaran khusus tidak cukup, menurut “ 4,9 Khusus Built-in Nama Target (gnu.org) ”. Halaman manual tidak menyebutkan opsi baris perintah untuk ini.
Menggunakan make
utilitas 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) .
make
yang dimaksudkan untuk digunakan dengan "Makefile lain" yang dimaksud. Anda juga telah mengatakan bahwa ".POSIX
target GNU tidak cukup, menurut" pembacaan beberapa dokumentasi Anda, tetapi Anda belum menunjukkan ini dengan kasus yang sebenarnya, yang sedikit masalah XY .Jawaban:
Saya cukup yakin bahwa tidak ada cara untuk menonaktifkan ekstensi membuat GNU. The
.POSIX
Target meningkatkan kompatibilitas tetapi tidak ekstensi tidak menonaktifkan kompatibel seperti fungsi, milik dot target,%
pola target, dllSaya 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
make
utilitas 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).sumber
pmake
untuk menguji portabilitas makefile saya. Itu mengklaim itu membuat rasa dari NetBSD. (Dalam versi Debian yang lebih barubmake
.)