我在C中有一个大项目,它是使用make文件构建的,并接受多个命令行参数,如make DSP = 1 DEBUG = 1 LX = 1等等
要完成我的实验,我需要通过传递不同的参数来构建这个程序。我可以创建一个文件,在其中我可以编写所有这些多个执行语句吗?
我知道必须有一些方法可以做到这一点,但我是Linux的新手,所以cnt可以解决。单独执行每个make会太忙。
答案 0 :(得分:1)
只需编写(或自动生成)包含所有命令的文本文件,每行一个。然后按顺序运行所有命令只需键入
bash <filename>
正常的unix方式是在开头添加一行#!/bin/bash
,然后执行chmod +x
以使文件可执行,但只是调用bash更容易并允许使用相同的文件windows(只需将文件命名为“something.bat”)。
答案 1 :(得分:1)
不要打扰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,那么应该可以同时运行多个bigcompile
所有 。在这种情况下,您需要告诉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
∶
(很有可能缩小这个样板文本。)
答案 2 :(得分:0)
基本答案由@6502提供。
您需要知道的另一个技巧是如何确保在重新运行时重建所有内容。使用GNU Make,您可以使用-B
(或--always-make
)选项。如果您不使用GNU Make,则可以运行清理(make clean
)以删除构建的文件。如果您还没有clean
目标,则需要添加一个。