C makefile和多次执行

C makefile和多次执行,c,makefile,C,Makefile,我有一个C语言的大项目,它使用make文件构建,并接受多个命令行参数,比如makedsp=1debug=1lx=1等等 为了完成我的实验,我需要通过传递不同的参数来构建这个程序。我可以创建一个文件,在其中写入所有这些多个执行语句吗 我知道一定有办法做到这一点,但我对linux还不熟悉,所以cnt就这样做了。单独执行每个make将过于繁忙。只需编写(或自动生成)一个包含所有命令的文本文件,每行一条。然后要按顺序运行所有命令,只需键入 bash <filename> bash 通常的

我有一个C语言的大项目,它使用make文件构建,并接受多个命令行参数,比如makedsp=1debug=1lx=1等等

为了完成我的实验,我需要通过传递不同的参数来构建这个程序。我可以创建一个文件,在其中写入所有这些多个执行语句吗

我知道一定有办法做到这一点,但我对linux还不熟悉,所以cnt就这样做了。单独执行每个make将过于繁忙。

只需编写(或自动生成)一个包含所有命令的文本文件,每行一条。然后要按顺序运行所有命令,只需键入

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
∶