Makefile-从源生成目标

Makefile-从源生成目标,makefile,Makefile,我正在尝试使用make构建越来越多的.cpp文件。它们都位于子目录src/中。我想将每个文件编译成它自己的可执行文件,驻留在bin/中。 这是我到目前为止尝试过的,但它不起作用,而且因为我是新手,所有的模式、变量等都使得很难确定什么扩展到了什么等等 CXX = g++ CXXFLAGS = -Wall -Wextra -pedantic SRC = $(wildcard src/*.cpp) BIN = $(patsubst src/%.cpp,bin/%,$(SRC)) all: $(BI

我正在尝试使用make构建越来越多的.cpp文件。它们都位于子目录src/中。我想将每个文件编译成它自己的可执行文件,驻留在bin/中。 这是我到目前为止尝试过的,但它不起作用,而且因为我是新手,所有的模式、变量等都使得很难确定什么扩展到了什么等等

CXX = g++
CXXFLAGS = -Wall -Wextra -pedantic

SRC = $(wildcard src/*.cpp)
BIN = $(patsubst src/%.cpp,bin/%,$(SRC))

all: $(BIN)

%: scr/%.cpp
    $(CXX) $(CXXFLAGS) $< -o $@
CXX=g++
CXXFLAGS=-Wall-Wextra-pedantic
SRC=$(通配符SRC/*.cpp)
BIN=$(patsubst src/%.cpp,BIN/%,$(src))
全部:$(BIN)
%:scr/%.cpp
$(CXX)$(CXXFLAGS)$<-o$@

另外,是否有一种方法可以只显示BIN的内容,例如,让我查看正在发生的事情?

这就是您的最终扩展的样子

file: scr/bin/file.cpp
为什么不这样做呢

BIN = $(patsubst src/%.cpp,%,$(SRC))

all: $(addprefix bin/, $(BIN))

bin/% : src/%
    $(GCC) $(FLAGS) $< -o $@

这就是您的最终扩展的样子

file: scr/bin/file.cpp
为什么不这样做呢

BIN = $(patsubst src/%.cpp,%,$(SRC))

all: $(addprefix bin/, $(BIN))

bin/% : src/%
    $(GCC) $(FLAGS) $< -o $@

非常感谢!至少我离得不远:-)多谢!至少我离得不远:-)make中有许多约定,遵循这些约定是明智的。CC是C编译器,CXX是C++编译器,cFLAGS是$(CC)的标志,CXXFLAGS是$(CXX)的标志,CPPFLAGS是预处理器的标志。有许多约定使它明智地遵循。CC是C编译器,CXX是C++编译器,cFLAGS是$(CC)的标志,CXXFLAGS是$(CXX)的标志,CPPFLAGS是预处理器的标志。