首页 > 解决方案 > 递归编译单独的 .cpp 文件 Makefile

问题描述

我有这样的文件结构:

Project
|-- program1
|   `-- main.cpp
|-- program2
|   `-- main.cpp
`-- program3
    `-- main.cpp

我想在项目根目录创建一个生成文件,它会自动递归获取所有 .cpp 文件并将它们编译为同一文件夹中的文件。像这样:

Project
|-- program1
|   |-- main.cpp
|   `-- main.o
|-- program2
|   |-- main.cpp
|   `-- main.o
`-- program3
    |-- main.cpp
    `-- main.o

这些程序彼此无关,因此没有任何重叠。

我以前从未创建过makefile,文档很难理解。有什么帮助吗?

标签: c++makefileg++

解决方案


这将满足您的要求(如果您使用的是 GNU make)

SRCS := $(wildcard */*.cpp)
OBJS := $(patsubst %.cpp,%.o,$(SRCS))

all: $(OBJS)

您的问题有些令人困惑,因为您的示例仅显示将源文件编译为目标文件,但目录名称显示为“程序”。

如果以上不是您想要的,请让您的问题更加清晰和详细。


推荐阅读