【问题标题】:How to execute a bunch of makefiles with only one command? Or how script my makefile?如何只用一个命令执行一堆makefile?或者如何编写我的makefile?
【发布时间】:2018-05-06 18:20:18
【问题描述】:

搜索大约 2 horus 的解决方案我什么也没找到,因为我什至不知道如何正确搜索它......我的问题是:我必须使用不同的“tad”文件(tad、tad01、tad02、 tad03...tad27),那么有没有办法制作某种“for 循环”并执行 27 次 makefile 仅通过所需的 tad 更改标签 NAME??

.PHONY= doc clean

NAME= tad02 #############I MEAN THIS LABEL<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
CC=g++
OPTIONS= -g 
DEBUG= #-D DEBUG
LIBDIR=lib
INCLUDEDIR=include
_OBJ= file1.o file2.o file3.o 
OBJ = $(patsubst %,$(LIBDIR)/%,$(_OBJ))

tad:    src/$(NAME).cpp $(OBJ)
    $(CC) $(OPTIONS) $(DEBUG) -I$(INCLUDEDIR) src/$(NAME).cpp $(OBJ) -o $(NAME)

$(LIBDIR)/%.o : $(LIBDIR)/%.cpp $(INCLUDEDIR)/%.h
    $(CC) $(OPTIONS) $(DEBUG) -c -I$(INCLUDEDIR) -o $@ $<

doc:
    doxygen

clean:
    rm -f $(OBJ) 

【问题讨论】:

  • CC=g++ 永远不合适。使用CXX=g++CC 是你的 C 编译器,CXX 是你的 C++ 编译器。当您定义正确的变量时,Make 的默认规则会更好地工作。

标签: shell loops makefile


【解决方案1】:

有很多方法可以做到这一点。这是一个:

TADS:= tad tad01 tadthree someothertad tad27

allTads: $(TADS)

$(TADS): %: src/%.cpp $(OBJ)
    $(CC) $(OPTIONS) $(DEBUG) -I$(INCLUDEDIR) $< $(OBJ) -o $@

【讨论】:

  • 所以如果我使用它,它会执行这 5 个中的每一个一次吗?哦,天哪,没想到会这么容易
猜你喜欢
  • 2023-03-12
  • 1970-01-01
  • 1970-01-01
  • 2010-12-19
  • 2022-11-24
  • 1970-01-01
  • 2019-01-12
相关资源
最近更新 更多