[RPM打包学习-SPEC文件]——%bcond_with(out)字段

在编写rpm包的spec文件过程中,我们通常会遇到如下字段

%bcond_without tests

这类定义一般出现在spec文件的开头,通常在后文中还会有引用,作为某个判断的标准,来确定是否执行这个if block,如

%if %{with tests}


那么问题来了,如果按如上方式编写,会不会执行呢?

如果单从字面意思来看,开头定义without,后面判断是否with tests,当然是没有!所以这个if block不会执行。

如果这样想,那么你就错了,恰恰相反,这个block是会执行的~


很多时候我们直接引用上游社区的软件包,对这些字段可能没有注意;而且软件包一旦编译通过,很少去研究这个字段究竟是什么意义,即使出错,也很少在这种环节报错。那么bcond_with(out)到底如何使用呢,请看如下解释。

【%bcond_with defaults value to 0】

【%bcond_without defaults value to 1】

所以,上面tests的值被定义为1,那么就执行这个if block了。

和我们从字面意思上理解正好相反,大家记住就好啦~

你可能感兴趣的:(linux)