- 主题:问一个Make如何改?
SUBDIRS=$(shell ls -l | grep ^d | awk '{print $$9}')
#以下同根目录下的makefile的相同代码的解释
CUR_SOURCE=${wildcard *.cpp}
CUR_OBJS=${patsubst %.cpp, %.o, $(CUR_SOURCE)}
all:$(SUBDIRS)$(CUR_OBJS)
$(SUBDIRS):ECHO
make -C $@
$(CUR_OBJS):%.o:%.cpp
$(CC) -c -std=c++11 -I ../inc $^ -o $(ROOT_DIR)/$(OBJS_DIR)/$@
ECHO:
@echo $(SUBDIRS)
想把静态规则:%o:%cpp改成不一样的路径,比如在/A中的.o依赖于/B中的.cpp,怎么写?
--
FROM 111.201.208.*
DIRS := A B
$(foreach i, $(DIRS), $(eval DIR-$(i) := $(wildcard $(i)/*.cpp)))
$(foreach i, $(DIRS), $(eval OBJ-$(i) := $(patsubst $(i)/%.cpp, $(i)/%.o, $(DIR-$(i)))))
define _build_cmd
$(OBJ-$(1)) : $(1)/%.o : $(1)/%.cpp
g++ -c -o $@ $<
endef
$(foreach i, $(DIRS), $(eval $(call _build_cmd, $(i))))
all: $(foreach i, $(DIRS), $(OBJ-$(i)))
g++ -o a.out $^
【 在 cleaf 的大作中提到: 】
: SUBDIRS=$(shell ls -l | grep ^d | awk '{print $$9}')
: #以下同根目录下的makefile的相同代码的解释
: CUR_SOURCE=${wildcard *.cpp}
: ...................
--
FROM 119.57.115.*
好复杂,研究一下。
【 在 prc79 的大作中提到: 】
: DIRS := A B
: $(foreach i, $(DIRS), $(eval DIR-$(i) := $(wildcard $(i)/*.cpp)))
: $(foreach i, $(DIRS), $(eval OBJ-$(i) := $(patsubst $(i)/%.cpp, $(i)/%.o, $(DIR-$(i)))))
: ...................
--
FROM 111.201.208.*