【发布时间】:2021-07-23 00:02:15
【问题描述】:
我在 Linux 中有一个 c++ 项目,其中源文件位于 2 个目录中,如下所示。目前,Makefile只编译source/目录下的文件,不编译"/"目录下的文件.我已经尝试了很多黑客无济于事。编译完source/目录下的源文件后如何指示Makefile编译"/"目录下的源文件,放到obj/ 目录 ? 我尝试了很多东西都无济于事......
欢迎精明的手!!
/ 生成文件 文件1.cpp 文件2.cpp ...
来源/ 文件30.cpp 文件31.cpp ...
对象/ 文件 30.o 文件 31.o ...
CC = g++
CXXFLAGS = -std=c++11 -Wall
LDFLAGS = -pthread
APPNAME = trading_app
EXT = .cpp
SRCDIR = source
OBJDIR = obj
SRC = $(wildcard $(SRCDIR)/*$(EXT))
OBJ = $(SRC:$(SRCDIR)/%$(EXT)=$(OBJDIR)/%.o)
DEP = $(OBJ:$(OBJDIR)/%.o=%.d)
RM = rm
DELOBJ = $(OBJ)
all: $(APPNAME)
$(APPNAME): $(OBJ)
@echo "building the executable..."
$(CC) $(CXXFLAGS) -o $@ $^ $(LDFLAGS)
%.d: $(SRCDIR)/%$(EXT)
@$(CPP) $(CFLAGS) $< -MM -MT $(@:%.d=$(OBJDIR)/%.o) >$@
$(OBJDIR)/%.o: $(SRCDIR)/%$(EXT)
$(info $$OBJ is [${OBJ}])
$(CC) $(CXXFLAGS) -o $@ -c $<
【问题讨论】:
-
您也可以使用remake 工具来调试您的
Makefile,但您需要先阅读文档。 -
Basile,是的,我做到了。事实上,我下载了 GNU Make 手册,并且已经阅读了前 5 章。这个文档真的很好。