Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimanakah saya boleh menyusun dan memautkan berbilang fail .cpp dalam projek menggunakan Makefile?

Bagaimanakah saya boleh menyusun dan memautkan berbilang fail .cpp dalam projek menggunakan Makefile?

Linda Hamilton
Linda Hamiltonasal
2024-11-01 00:15:02688semak imbas

How can I compile and link multiple .cpp files in a project using a Makefile?

Menyusun dan Memautkan Berbilang Fail .cpp dengan Makefile

Dalam pembangunan projek, mengurus berbilang fail sumber boleh menyusahkan. Makefile menyediakan cara yang diperkemas untuk mengautomasikan proses penyusunan dan pemautan. Dalam kes ini, matlamatnya ialah untuk menyusun semua fail ".cpp" dalam direktori "/src" kepada fail ".o" dalam direktori "/obj", dan kemudian memautkannya ke dalam boleh laku binari dalam folder akar.

Pelaksanaan Makefile

Untuk mencapai ini, Makefile boleh dibuat dengan perkara berikut kandungan:

<code class="makefile"># Define directories
SRC_DIR = src
OBJ_DIR = obj

# Get all .cpp files in the src directory
SRC_FILES = $(wildcard ${SRC_DIR}/*.cpp)

# Derive .o files from .cpp files
OBJ_FILES = $(patsubst ${SRC_DIR}/%.cpp, ${OBJ_DIR}/%.o, ${SRC_FILES})

# Linker flags
LDFLAGS = ...

# C compiler flags
CPPFLAGS = ...

# C++ compiler flags
CXXFLAGS = -std=c++11 -MMD -MP

# Target binary
main.exe: ${OBJ_FILES}
    g++ ${LDFLAGS} -o $@ $^

# Compile .cpp to .o in obj/ directory
${OBJ_DIR}/%.o: ${SRC_DIR}/%.cpp
    g++ ${CPPFLAGS} ${CXXFLAGS} -c -o $@ $<

# Include automatically generated dependencies
-include ${OBJ_FILES:.o=.d}</code>

Penjelasan

  • Fail Make mentakrifkan direktori untuk sumber, fail objek dan binari akhir.
  • Ia mengenal pasti semua fail ".cpp" dalam direktori "/src" dan mencipta senarai ".o" yang sepadan fail.
  • Bendera pengkompil tersuai boleh ditakrifkan mengikut keperluan.
  • Sasaran utama "main.exe" bergantung pada semua fail ".o".
  • Peraturan ditetapkan untuk menyusun setiap fail ".cpp" ke fail ".o" dalam direktori "/obj".
  • Penjanaan graf pergantungan automatik ialah didayakan menggunakan bendera "-MMD", yang membantu mengurus kebergantungan berdasarkan pengubahsuaian sumber.
  • Bendera "-MP" memastikan bahawa fail kebergantungan yang dijana diletakkan dalam direktori yang sama dengan fail sumber, memudahkan penyelenggaraan.

Amalan Terbaik

Pendekatan ini untuk menyusun dan memautkan berbilang Fail ".cpp" biasanya digunakan dan mengikut amalan standard. Ia memberikan fleksibiliti dalam mengurus fail sumber melalui Makefile, sambil memastikan penyusunan dan pemautan yang cekap.

Atas ialah kandungan terperinci Bagaimanakah saya boleh menyusun dan memautkan berbilang fail .cpp dalam projek menggunakan Makefile?. 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