首頁 > 後端開發 > C++ > 如何使用 GNU Make 建立具有相似規則的多個可執行檔?

如何使用 GNU Make 建立具有相似規則的多個可執行檔?

Linda Hamilton
發布: 2024-10-28 14:56:02
原創
968 人瀏覽過

 How to Build Multiple Executables with Similar Rules Using GNU Make?

使用GNU Make 建立具有類似規則的多個可執行檔

雖然Scons 是一個功能強大的建置工具,但實作所需的功能可能具有挑戰性。更直接的方法是利用 GNU Make,它可以輕鬆地從頂級和單一專案目錄進行建置和清理。

Makefile 設定

提供的 makefile啟用從 all_lessons 目錄和單一專案目錄進行建置和清理。每個項目的可執行檔均以其目錄命名。

專案結構

要實現此目的,您需要設定與提供的範例類似的專案結構:

all_lessons/
    helloworld/
        lesson.cpp
        main.cpp
    even_or_odd/
        lesson.cpp
        main.cpp
    calculator/
        lesson.cpp
        user_created_add.cpp
        main.cpp
登入後複製

Make內容

project.mk

all :
% : forward_ # build any target by forwarding to the main makefile
    $(MAKE) -C .. project_dirs=$(notdir ${CURDIR}) $@
.PHONY : forward_
登入後複製

Makefile用>

# project configuration

project_dirs := $(shell find * -maxdepth 0 -type d )
exes := $(foreach dir,${project_dirs},${dir}/${dir})

all : ${exes}

# rules

.SECONDEXPANSION:
objects = $(patsubst %.cpp,%.o,$(wildcard $(dir )*.cpp))

# link
${exes} : % : $$(call objects,$$*) Makefile
    g++ -o $@ $(filter-out Makefile,$^) ${LDFLAGS} ${LDLIBS}

# compile .o and generate dependencies
%.o : %.cpp Makefile
    g++ -c -o $@ -Wall -Wextra ${CPPFLAGS} ${CXXFLAGS} -MD -MP -MF ${@:.o=.d} $<

.PHONY: clean
clean :
    rm -f $(foreach exe,${exes},$(call objects,${exe})) $(foreach dir,${project_dirs},$(wildcard ${dir}/*.d)) ${exes}

# include dependency files
-include $(foreach dir,${project_dirs},$(wildcard ${dir}/*.d))
登入後複製

從各個專案目錄建置

從頂層目錄建置

[project_directory]$ ln -s ../project.mk Makefile  # create a symlink
[project_directory]$ make
登入後複製

單一項目目錄

[all_lessons]$ make
登入後複製

清理所有項目

[project_directory]$ cd ..
[all_lessons]$ make clean
登入後複製

以上是如何使用 GNU Make 建立具有相似規則的多個可執行檔?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板