Rumah >pembangunan bahagian belakang >C++ >Memahami Makefile (Contoh dengan bahasa C).

Memahami Makefile (Contoh dengan bahasa C).

王林
王林asal
2024-07-17 01:18:02947semak imbas

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

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 $@
  1. Phonies: Menggunakan .PHONY untuk sasaran yang bukan fail.
   .PHONY: clean
   clean:
       rm -f $(OBJECTS) $(TARGET)
  1. Pembolehubah: Menggunakan pembolehubah untuk memudahkan pengurusan laluan dan pilihan.
   CC = gcc
   CFLAGS = -Wall
  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)

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

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!

Kenyataan:
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