首頁  >  文章  >  後端開發  >  如何使用 Makefile 編譯和連結專案中的多個 .cpp 檔案?

如何使用 Makefile 編譯和連結專案中的多個 .cpp 檔案?

Linda Hamilton
Linda Hamilton原創
2024-11-01 00:15:02754瀏覽

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

使用 Makefile 編譯並連結多個 .cpp 檔案

在專案開發中,管理多個原始檔案可能很麻煩。 Makefile 提供了一種自動化編譯和連結過程的簡化方法。在本例中,目標是將“/src”目錄中的所有“.cpp”文件編譯為“/obj”目錄中的“.o”文件,然後將它們連結到根資料夾中的二進位可執行文件。

Makefile 實現

要實現此目的,可以使用以下內容建立Makefile:

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

說明說明

  • 說明
  • 說明
  • 說明
  • 說明
  • 說明
  • 說明
  • Makefile定義來源檔案、目標檔案和最終二進位檔案的目錄。
它標識「/src」目錄中的所有「.cpp」文件,並建立對應的清單「.o」文件。

可以根據需要定義自訂編譯器標誌。

主要目標「main.exe」依賴所有「.o」檔案。

設定規則將每個「.cpp」檔案編譯為「/obj」目錄中的「.o」檔案。 使用「-MMD」標誌啟用自動依賴關係圖生成,這有助於管理依賴關係基於來源修改。 「-MP」標誌確保產生的依賴檔案與原始檔案放在同一目錄中,從而簡化維護。 最佳實務這種編譯和連結多個「.cpp」檔案的方法是常用的,並且遵循標準實務。它提供了透過 Makefile 管理原始檔的靈活性,同時確保高效的編譯和連結。

以上是如何使用 Makefile 編譯和連結專案中的多個 .cpp 檔案?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn