为宏指定参数
Specifying Parameters to Macros
目前正在为 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
第一行是接受参数的宏。
第 2 行应将 postgresql_ver
定义为 9.4.15
。
第 3 行应将 postgresql_ver_short
定义为 9.4
。
第 4 行应将 postgresql_ver_major
定义为 94
。
我该如何测试?这是正确的吗?
首先,你错了。应该是:
%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
目前正在为 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
第一行是接受参数的宏。
第 2 行应将 postgresql_ver
定义为 9.4.15
。
第 3 行应将 postgresql_ver_short
定义为 9.4
。
第 4 行应将 postgresql_ver_major
定义为 94
。
我该如何测试?这是正确的吗?
首先,你错了。应该是:
%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