在 linux make 文件中:
我只想在编译成功的情况下运行输出程序。
有没有办法做到这一点?
在 linux make 文件中:
我只想在编译成功的情况下运行输出程序。
有没有办法做到这一点?
我能想到的最简单的方法看起来像这样......
run: program_name
./program_name
如果 program_name 不存在且无法编译,“make run”应该会失败。
make 成功返回 0,编译失败返回 2。我用 bash 尝试了以下操作
make && ./success
其中成功是生成的二进制文件的名称。
&& 保证第二个程序只有在第一个程序成功运行时才会执行。
就像其他人说的那样,使用&&
. 例如:
$ make && ./a.out
有两件事可以使它起作用;首先,在 UNIX 中有一个约定,所有成功的东西都返回 0(包括 C 程序)。有一个古老的笑话可以帮助您记住“罗马帝国的衰落是因为罗马人没有一个零来成功终止他们的 C 程序”。
其次,&&
是布尔“与”的“短路”版本。也就是说,它将评估其左侧的表达式,并且仅当0
它评估右侧的表达式时。这也是 Java 运算符&&
(短路)和&
(总是计算两个操作数)之间的区别。许多命令式语言都包含这两种运算符,以防布尔表达式的右侧操作数中存在副作用(例如 I/O、变量更新),在这种情况下,您肯定要计算两个操作数。然而,有些人会说以这种方式嵌入副作用是不好的风格。
如果您构建的可执行文件被命名a.out
,那么您可以执行以下操作:
% make && ./a.out