linux / unix和makefile

时间:2010-05-17 15:55:16

标签: linux unix makefile compilation conditional-compilation

在linux make文件中:
 我只想在编译成功的情况下运行输出程序。

有办法做到这一点吗?

4 个答案:

答案 0 :(得分:5)

我能想到的最简单的方式就像这样...

run: program_name
        ./program_name

如果program_name不存在且无法编译,则“make run”将失败。

答案 1 :(得分:3)

成功返回0,编译失败时返回2。我用bash尝试了以下内容

make && ./success

其中success是生成的二进制文件的名称 和&&保证第二个程序只有在第一个程序成功运行时才会执行。

答案 2 :(得分:3)

像其他人所说,使用&&。例如:

$ make && ./a.out

有两件事可以使这项工作;首先,在UNIX中有一个约定,即所有成功的东西都返回0(包括C程序)。有一个古老的笑话可以帮助你记住这个“罗马帝国倒下,因为罗马人没有成功终止他们的C程序的零”。

其次,&&是布尔“和”的“短路”版本。也就是说,它将评估左侧的表达式,并且只有0它才会评估右侧的表达式。这也是Java运算符&&(短路)和&之间的区别(总是计算两个操作数)。许多命令式语言包含两种运算符,以防在布尔表达式的右侧操作数中存在副作用(例如I / O,变量更新),在这种情况下,您肯定要评估两个操作数。然而,有些人会说以这种方式嵌入副作用是不好的方式。

答案 3 :(得分:1)

如果您构建的可执行文件名为a.out,那么您可以执行以下操作:

% make && ./a.out