在linux make文件中:
我只想在编译成功的情况下运行输出程序。
有办法做到这一点吗?
答案 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