openeuler不识别cmake_build

背景

在openeuler上面打包rpm的时候,有的src.rpm内部调用了%cmake_build的宏变量,openeuler的默认cmake3.22版本不支持,可以通过修改宏变量来实现可用

修改

修改文件路径为: /usr/lib/rpm/macros.d/macros.cmake

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
[root@openeuler ~]# cat /usr/lib/rpm/macros.d/macros.cmake
#
# Macros for cmake
#
%_cmake_lib_suffix64 -DLIB_SUFFIX=64
%_cmake_skip_rpath -DCMAKE_SKIP_RPATH:BOOL=ON
%_cmake_version 3.22.0
%__cmake /usr/bin/cmake
%__ctest /usr/bin/ctest
%__cmake_builddir %{!?__cmake_in_source_build:%{_vpath_builddir}}%{?__cmake_in_source_build:.}


# - Set default compile flags
# - CMAKE_*_FLAGS_RELEASE are added *after* the *FLAGS environment variables
# and default to -O3 -DNDEBUG. Strip the -O3 so we can override with *FLAGS
# - Turn on verbose makefiles so we can see and verify compile flags
# - Set default install prefixes and library install directories
# - Turn on shared libraries by default
%cmake \
CFLAGS="${CFLAGS:-%optflags}" ; export CFLAGS ; \
CXXFLAGS="${CXXFLAGS:-%optflags}" ; export CXXFLAGS ; \
FFLAGS="${FFLAGS:-%optflags%{?_fmoddir: -I%_fmoddir}}" ; export FFLAGS ; \
FCFLAGS="${FCFLAGS:-%optflags%{?_fmoddir: -I%_fmoddir}}" ; export FCFLAGS ; \
%{?__global_ldflags:LDFLAGS="${LDFLAGS:-%__global_ldflags}" ; export LDFLAGS ;} \
%__cmake \\\
%{!?__cmake_in_source_build:-S "%{_vpath_srcdir}"} \\\
%{!?__cmake_in_source_build:-B "%{__cmake_builddir}"} \\\
-DCMAKE_C_FLAGS_RELEASE:STRING="-DNDEBUG" \\\
-DCMAKE_CXX_FLAGS_RELEASE:STRING="-DNDEBUG" \\\
-DCMAKE_Fortran_FLAGS_RELEASE:STRING="-DNDEBUG" \\\
-DCMAKE_VERBOSE_MAKEFILE:BOOL=ON \\\
-DCMAKE_INSTALL_PREFIX:PATH=%{_prefix} \\\
-DINCLUDE_INSTALL_DIR:PATH=%{_includedir} \\\
-DLIB_INSTALL_DIR:PATH=%{_libdir} \\\
-DSYSCONF_INSTALL_DIR:PATH=%{_sysconfdir} \\\
-DSHARE_INSTALL_PREFIX:PATH=%{_datadir} \\\
%if "%{?_lib}" == "lib64" \
%{?_cmake_lib_suffix64} \\\
%endif \
-DBUILD_SHARED_LIBS:BOOL=ON

%cmake_build \
%__cmake --build "%{__cmake_builddir}" %{?_smp_mflags} --verbose

%cmake_install \
DESTDIR="%{buildroot}" %__cmake --install "%{__cmake_builddir}"

%ctest(:-:) \
cd "%{__cmake_builddir}" \
%__ctest --output-on-failure --force-new-ctest-process %{?_smp_mflags} %{**} \
cd -

%cmake3 %cmake
%cmake3_build %cmake_build
%cmake3_install %cmake_install
%ctest3(:-:) %ctest %{**}

通过上面的修改后,即可适配高版本的编译