为宏指定参数

时间:2018-01-10 17:16:31

标签: macros rpm rpm-spec

目前,为RPM编写* .spec文件。如何动态定义变量以便它们使用参数化宏?

根据rpm documentation,我提出了以下内容:

1     %define postgresql_macro() (?%1?%2?%3?%4?%5)
2     %define postgresql_ver %postgresql_macro 9 . 4 . 15
3     %define postgresql_ver_short %postgresql_macro 9 . 4 .
4     %define postgresql_ver_major 9 4

第1行是接受参数的宏。

第2行应将postgresql_ver定义为9.4.15

LIne 3应将postgresql_ver_short定义为9.4

第4行应将postgresql_ver_major定义为94

我该如何测试?这是对的吗?

1 个答案:

答案 0 :(得分:2)

首先,你错了。它应该是:

%define postgresql_macro() %1%2%3%4%5                                                                                              
%define postgresql_ver %postgresql_macro 9 . 4 . 15
%define postgresql_ver_short %postgresql_macro 9 . 4 .
%define postgresql_ver_major 9 4

你可以这样测试。输入您的SPEC文件:

%prep
%define postgresql_macro() %1%2%3%4%5                                                                                              
%define postgresql_ver %postgresql_macro 9 . 4 . 15
%define postgresql_ver_short %postgresql_macro 9 . 4 .
%define postgresql_ver_major 9 4
echo %{postgresql_ver}

现在运行rpmbuild -bp your.spec。这应打印:9.4.15