Memahami Makefile (Contoh dengan bahasa C).

王林
Lepaskan: 2024-07-17 01:18:02
asal
934 orang telah melayarinya

Comprendre le Makefile (Exemple avec langage C).

Fail Make ialah fail yang digunakan oleh alat buat untuk mengautomasikan penyusunan atur cara. Berikut ialah peraturan standard dan amalan terbaik untuk menulis Makefile yang berkesan:

Struktur Asas Makefile

  1. Sasaran: Perkara yang anda mahu bina (cth. fail boleh laku).
  2. Prasyarat: Fail yang diperlukan untuk membina sasaran (cth. fail sumber).
  3. Peraturan: Perintah untuk melaksanakan untuk mencipta sasaran.

Contoh Mudah

target: prerequisites
    command
Salin selepas log masuk

Peraturan Standard

  1. Peraturan lalai: Sasaran pertama dalam Makefile ialah yang akan dibina secara lalai.

  2. Menyusun fail sumber:

    • Gunakan pembolehubah untuk penyusun dan pilihan.
    • Contoh:
   CC = gcc
   CFLAGS = -Wall -g
   SOURCES = main.c utils.c
   OBJECTS = $(SOURCES:.c=.o)
   TARGET = mon_programme

   $(TARGET): $(OBJECTS)
       $(CC) -o $@ $^

   %.o: %.c
       $(CC) $(CFLAGS) -c $< -o $@
Salin selepas log masuk
  1. Phonies: Menggunakan .PHONY untuk sasaran yang bukan fail.
   .PHONY: clean
   clean:
       rm -f $(OBJECTS) $(TARGET)
Salin selepas log masuk
  1. Pembolehubah: Menggunakan pembolehubah untuk memudahkan pengurusan laluan dan pilihan.
   CC = gcc
   CFLAGS = -Wall
Salin selepas log masuk
  1. Pengurusan pergantungan: Menggunakan peraturan dan corak tersirat untuk mengurangkan pengulangan.

  2. Kebergantungan automatik: Anda boleh menjana kebergantungan secara automatik untuk fail .o.

   -include $(OBJECTS:.o=.d)
Salin selepas log masuk

Contoh Penuh

Berikut ialah contoh Makefile lengkap:

# Variables
CC = gcc
CFLAGS = -Wall -g
SOURCES = main.c utils.c
OBJECTS = $(SOURCES:.c=.o)
TARGET = mon_programme

# Règle par défaut
all: $(TARGET)

# Lien de l'exécutable
# $@ -> $(TARGET)
# $^ -> $(OBJECTS)
$(TARGET): $(OBJECTS)
    $(CC) -o $@ $^

# Compilation des fichiers .c en .o
# $< -> Premier element des pr
%.o: %.c
    $(CC) $(CFLAGS) -c $< -o $@

# Déclaration des cibles phony
.PHONY: all clean fclean re

# Nettoyage des fichiers objets
clean:
    rm -f $(OBJECTS)

# Nettoyage complet (fichiers objets et exécutable)
fclean: clean
    rm -f $(TARGET)

# Refaire la compilation
re: fclean all
Salin selepas log masuk

Amalan Baik

  1. Inden dengan tab: Perintah dalam peraturan harus diinden dengan tab, bukan ruang.

  2. Kod ulasan: Menggunakan ulasan untuk menerangkan bahagian Makefile.

  3. Fail kumpulan: Jika projek anda mengandungi berbilang fail, susunkannya ke dalam subdirektori dan gunakan pembolehubah untuk mengurus laluan.

  4. Gunakan peraturan tersirat: Manfaatkan peraturan terbina dalam make untuk mengelak daripada menulis semula peraturan biasa.

Mengapa menggunakan .PHONY?

  • Elakkan konflik: Jika fail dengan nama yang sama dengan sasaran wujud, make akan berfikir bahawa sasaran adalah terkini dan tidak akan melaksanakan arahan yang berkaitan. .PHONY mengelak perkara ini.

  • Prestasi yang dipertingkatkan:Sasaran palsu sentiasa dianggap "untuk dilakukan", yang boleh meningkatkan kelajuan pelaksanaan perintah yang berkaitan.

Mengapa menggunakan %.o:%c untuk penyusunan?

  • Kecekapan: Menggunakan %.o:%c membolehkan anda mendapat manfaat daripada membuat pengoptimuman untuk hanya menyusun semula perkara yang diperlukan.

  • Praktikal: Untuk projek yang lebih besar, %.o:%c adalah lebih sesuai.

Kesimpulan

Fail Make yang tersusun dengan baik menjadikan pengurusan projek lebih mudah dan mengelakkan ralat penyusunan. Dengan mematuhi peraturan dan amalan terbaik ini, anda boleh mencipta Makefile yang cekap dan boleh diselenggara.

Atas ialah kandungan terperinci Memahami Makefile (Contoh dengan bahasa C).. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan