C makefile和多次执行
我有一个C语言的大项目,它使用make文件构建,并接受多个命令行参数,比如makedsp=1debug=1lx=1等等 为了完成我的实验,我需要通过传递不同的参数来构建这个程序。我可以创建一个文件,在其中写入所有这些多个执行语句吗 我知道一定有办法做到这一点,但我对linux还不熟悉,所以cnt就这样做了。单独执行每个make将过于繁忙。只需编写(或自动生成)一个包含所有命令的文本文件,每行一条。然后要按顺序运行所有命令,只需键入C makefile和多次执行,c,makefile,C,Makefile,我有一个C语言的大项目,它使用make文件构建,并接受多个命令行参数,比如makedsp=1debug=1lx=1等等 为了完成我的实验,我需要通过传递不同的参数来构建这个程序。我可以创建一个文件,在其中写入所有这些多个执行语句吗 我知道一定有办法做到这一点,但我对linux还不熟悉,所以cnt就这样做了。单独执行每个make将过于繁忙。只需编写(或自动生成)一个包含所有命令的文本文件,每行一条。然后要按顺序运行所有命令,只需键入 bash <filename> bash 通常的
bash <filename>
bash
通常的unix方式是添加一行
#/bin/bash
开始,然后执行chmod+x
使文件可执行,但只调用bash更容易,并且允许在windows上使用相同的文件(只需将文件命名为“something.bat”)。基本答案由给出
您需要知道的另一个技巧是如何确保在重新运行时重建所有内容。有了GNU Make,您可以使用
-B
(或--始终生成
)选项。如果未使用GNU Make,则可以运行清理(Make clean
)来删除生成的文件。如果您还没有一个干净的目标,您需要添加一个。不要为shell脚本操心,在make中完成它。通过这种方式,您可以获得make的优点:检测损坏的编译;并联运行;所有的东西都放在一个地方,等等
.PHONY: all
all:
${MAKE} bigcompile DSP=1 DEBUG=1 LX=1
${MAKE} bigcompile DSP=0 DEBUG=1 LX=1
${MAKE} bigcompile DSP=1 DEBUG=0 LX=1
${MAKE} bigcompile DSP=0 DEBUG=0 LX=1
∶
bigcompile:
∶
如果已经正确编写了makefile,那么应该可以同时运行多个bigcomile
s。在这种情况下,您需要告诉make它可以同时运行多个bigcompile:
(显然有机会缩小此样板文本。)
.PHONY: all
all: compile1 compile2 compile3 compile4 ; @echo $@ success
.PHONY: compile1 compile2 compile3 compile4
compile1: ; ${MAKE} bigcompile DSP=1 DEBUG=1 LX=1
compile2: ; ${MAKE} bigcompile DSP=0 DEBUG=1 LX=1
compile3: ; ${MAKE} bigcompile DSP=1 DEBUG=0 LX=1
compile4: ; ${MAKE} bigcompile DSP=0 DEBUG=0 LX=1
∶