使用makefile调用vcs时自动寻找文件夹下的所有include文件夹并添加为包含文件
时间: 2024-11-22 22:48:21 浏览: 38
在Makefile中,当你需要在特定文件夹下查找所有头文件(`.h` 或 `.hpp` 等)并在编译过程中自动包含它们,你可以使用递归规则或者通配符来实现这个功能。下面是一个基本的示例:
```makefile
SOURCES := $(wildcard src/*.cpp) # 获取src目录下所有的.cpp文件
HEADERS := $(wildcard include/*.h) # 获取include目录下所有的.h文件
# 添加include路径到编译命令中
CFLAGS += -I$(dir $(HEADERS))
# 对于每一个源文件,链接所有相关的头文件
%.o: %.cpp $(HEADERS)
$(CC) $(CFLAGS) -c $< -o $@
all: $(SOURCES:%.cpp=%.o)
$(LINKER) $(OBJECTS) -o output
# 如果你想递归查找更深层次的include文件夹,可以使用find命令代替wildcard
# HEADERS := $(shell find include -name "*.h")
clean:
rm -f *.o output
```
在这个Makefile中,`$(wildcard)`函数会返回指定目录下匹配指定模式的所有文件名,`$(dir $(HEADERS))`会提取出每个头文件所在的目录作为-I选项传递给编译器。`%.o: %.cpp $(HEADERS)`规则定义了如何从源文件生成目标对象文件,并将头文件添加到依赖列表中。
请注意,这只是一个基础示例,实际的Makefile可能需要根据项目结构和具体的构建工具(如GCC、Clang或MSVC)做相应的调整。
阅读全文