gpt4 book ai didi

使用 gcc 的 c++ makefile - 从子文件夹列表生成源文件列表

转载 作者:行者123 更新时间:2023-11-30 03:24:41 24 4
gpt4 key购买 nike

所以我有一些有效的规则:

# Folders
SRCDIR = src
SUBFOLDERS = test test/test2
OBJDIR = obj

# Just for me so I can read my own makefile :o
_TARGET = $@
_DEPEND = $<

# Get sources from /src and /src/test/ and /src/test/test2/
SOURCES = $(wildcard $(SRCDIR)/*.cpp ))
SOURCES = $(wildcard $(SRCDIR)/test/*.cpp ))
SOURCES = $(wildcard $(SRCDIR)/test/test2/*.cpp ))
OBJECTS = $(addprefix $(OBJDIR)/, $(patsubst src/%, %, $(SOURCES:.cpp=.o))

# Main target 'make debug'
debug: debugging $(OBJECTS)
@echo building: gcc $(OBJECTS) -o out.exe

# Compiling each file
$(OBJDIR)/%.o: $(SRCDIR)/%.cpp
g++ -c $(_DEPEND) -o $(_TARGET)

debugging:
@echo $(SOURCES)
@echo $(OBJECTS)

注意:我不得不手动复制此代码,因此可能存在一些错误,但希望它清楚我正在尝试做什么。

假设我想添加更多源文件子文件夹:src/another、src/andanother。现在我必须添加更多 SOURCES = ... 行来执行此操作。有没有办法在规则中做到这一点。我一直在修补它,但我还不能想出有效的规则。我想要的是我将一个新文件夹添加到 SUBFOLDERS 列表,我的代码会自动获取 .cpp 文件。

注意 我不想使用像 $(shell find ... ) 这样的东西,因为 windows find 很烂,我希望它像 windows 一样便携/Linux。

最佳答案

您可以使用 make 的 foreach。喜欢:

SOURCES = $(foreach dir,${SUBFOLDERS},$(wildcard ${dir}/*.cpp))

更多信息: https://www.gnu.org/software/make/manual/html_node/Foreach-Function.html

关于使用 gcc 的 c++ makefile - 从子文件夹列表生成源文件列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49555670/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com