makefile和多次执行

时间:2010-12-25 23:04:07

标签: c makefile

我在C中有一个大项目,它是使用make文件构建的,并接受多个命令行参数,如make DSP = 1 DEBUG = 1 LX = 1等等

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

我知道必须有一些方法可以做到这一点,但我是Linux的新手,所以cnt可以解决。单独执行每个make会太忙。

3 个答案:

答案 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目标,则需要添加一个。