【发布时间】:2021-04-21 13:31:59
【问题描述】:
可以用 make 编译一个 .cpp 列表吗? 在我的生成文件中,我有 2 个列表,一个是 .o,第二个是 .cpp。 .o 的列表与具有不同路径的 .cpp 相同。 我不能使用 vpath,因为我有多个同名的 .cpp。
我可以浏览 .o 但不能浏览 .cpp:
$(OBJS): $(SRC)
$(LINKER) -g -o $@ $^ $(LDFLAGS)
在这种情况下,我的 .cpp 对于所有 .o 都是相同的。
$(OBJS) 是 .o 的列表,$(SRC) 是 .cpp
Makefile 示例:
COMPILATEUR=g++
LINKER=g++
LDFLAGS=
CFLAGS=-Og
PATH_BUILD=$(pwd)/Build/
EXE=Bidou
INCLUDES= -I"AAA/BBB" \
-I"AAA/BBB/CC/dd"
SRC= AAA/BBB/CC/dd.cpp \
AAA/BBB/hh.cpp \
AAA/BBB/CC/dd/ee.cpp \
AAA/BBB/cc.cpp
OBJS:= $(addprefix $(PATH_BUILD)/,$(notdir $(SRC:%.cpp=%.o)))
$(OBJS): $(SRC)
@mkdir -p $(PATH_BUILD)
@echo "\n##$<"
$(COMPILATEUR) $(INCLUDES) $(CFLAGS) "$<" -g -c -o $@
$(EXE): $(OBJS)
$(LINKER) -g -o $@ $^ $(LDFLAGS)
clean:
rm -fr $(PATH_BUILD)
【问题讨论】:
-
您似乎将所有不同源目录中的所有目标文件放入 single 输出目录,但您在不同源中也有同名的源文件目录。那是行不通的。
-
对不起,我的例子错了,我没有编译相同的 .cpp 但是,我在 AAA/BBB/CC/dd/ 目录中有一个 cc.cpp,但我想编译AAA/BBB/的cc.cpp,没有vpath函数