Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Menyusun dan Memautkan Berbilang Fail .cpp ke dalam Perduaan Tunggal?

Bagaimana untuk Menyusun dan Memautkan Berbilang Fail .cpp ke dalam Perduaan Tunggal?

Susan Sarandon
Susan Sarandonasal
2024-11-01 09:47:30723semak imbas

How to Compile and Link Multiple .cpp Files into a Single Binary?

Cara Menghimpun dan Memautkan Berbilang Fail .cpp ke dalam Binari

Artikel ini bertujuan untuk menangani persoalan menyusun berbilang fail .cpp ke dalam .o objek dan memautkannya ke dalam satu binari.

Konfigurasi Makefile

Untuk mencapai ini, Makefile boleh digunakan dengan kandungan berikut:

SRC_DIR = ./src
OBJ_DIR = ./obj
SRC_FILES = $(wildcard $(SRC_DIR)/*.cpp)
OBJ_FILES = $(patsubst $(SRC_DIR)/%.cpp,$(OBJ_DIR)/%.o,$(SRC_FILES))

main.exe: $(OBJ_FILES)
    g++ $(LDFLAGS) -o $@ $^

$(OBJ_DIR)/%.o: $(SRC_DIR)/%.cpp
    g++ $(CPPFLAGS) $(CXXFLAGS) -c -o $@ $<

Penjelasan:

  • SRC_DIR: Menentukan direktori yang mengandungi fail .cpp sumber.
  • OBJ_DIR: Menunjukkan direktori tempat objek .o akan dibuat.
  • SRC_FILES: Senarai semua fail .cpp dalam SRC_DIR.
  • OBJ_FILES : Senarai semua objek .o yang akan dijana.
  • main.exe: Nama binari akhir.
  • LDFLAGS: Bendera pemaut.
  • CPPFLAGS: Bendera prapemproses C.
  • CXXFLAGS: Bendera pengkompil C.

Penjanaan Graf Ketergantungan

Untuk menjana kebergantungan secara automatik antara fail sumber dan objek, tambahkan yang berikut pada Makefile:

CXXFLAGS += -MMD
-include $(OBJ_FILES:.o=.d)

Amalan Terbaik

Pendekatan ini biasanya digunakan untuk menyusun dan memautkan berbilang fail C. Walau bagaimanapun, adalah penting untuk merujuk kepada GNU Make Manual untuk panduan tambahan dan pilihan lanjutan.

Atas ialah kandungan terperinci Bagaimana untuk Menyusun dan Memautkan Berbilang Fail .cpp ke dalam Perduaan Tunggal?. 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