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