openSUSE:Libzypp 构建
构建 libzypp
版本:10.3+ ZYPP 仅以这种方式构建 10.3 代码库及更高版本
自 3.x 版本以来,libzypp 使用 cmake 进行构建。
如果您正在使用 factory,cmake 已经可用。对于发布版本,请查看此 构建服务 仓库。
如果您不使用 subversion 仓库,请将源代码作为压缩的 tar 文件获取,并在 /somewhere 中解压 zypp-3.x.x.tar.bz2 tarball
cd /somewhere; tar -jxpvf /downloads/zypp-3.x.x.tar.bz2
创建一个用于构建的目录,例如 /zypp-build
mkdir /zypp-build
进入构建目录
cd /zypp-build
运行 cmake /somewhere/libzypp-3.x.x,例如:
cmake -DCMAKE_INSTALL_PREFIX=/opt/zypp3 /somewhere/libzypp-3.x.x
默认情况下,cmake 会在构建树上使用 rpath 进行构建。这样,可执行文件在构建树内部可以正常工作。这会导致在安装时重新链接。使用 -DCMAKE_BUILD_WITH_INSTALL_RPATH=1 或 -DCMAKE_SKIP_RPATH=1 来完全跳过 rpath。
(您可能需要一些软件包,例如 popt-devel、rpm-devel、dbus-1-devel、dbus-1-glib-devel、hal-devel、doxygen、graphviz、libxml2-devel、boost、boost-devel、gettext-devel、dejagnu、zlib-devel、libicu、glib2-devel、readline-devel、curl-devel、e2fsprogs-devel、libidn-devel、openssl-devel、libsatsolver-devel。)
您将看到 cmake 配置构建
-- Libraries will be installed in /opt/zypp3/lib -- rpm found: includes in /usr/include, library in /usr/lib/librpm.so -- boost found: includes in /usr/include, library in /usr/lib -- Found Gettext: -- hal found: includes in /usr/include, library in /usr/lib/libhal.so -- dbus found: includes in /usr/include/dbus-1.0, library in /usr/lib/libdbus-1.so -- glib found: includes in /opt/gnome/include/glib-2.0, library in /opt/gnome/lib/libglib.so -- glib found: includes in /opt/gnome/include/glib-2.0, library in /opt/gnome/lib/libglib.so -- curl found: includes in /usr/include, library in /usr/lib/libcurl.so -- libxml found: includes in /usr/include, library in /usr/lib/libxml2.so -- sqlite found: includes in /usr/include, library in /usr/lib/libsqlite3.so -- doxygen found: /usr/bin/doxygen -- soname: 300.0.0 -- version: 3.0.0 -- Writing spec file... -- Writing pkg-config file... -- FindZypp.cmake will be installed in /opt/zypp3/share/cmake/Modules -- Configuring done -- Generating done -- Build files have been written to: /build-zypp
运行 make
make
如果您想要完整的输出,您可以
make VERBOSE=1
测试套件
要运行 libzypp 的测试套件,请进入 zypp-build/tests 目录并执行
make make test
翻译
进入 zypp-build/po 目录
make translations make install
创建用于 mbuild、srcpackage 或构建服务的目录
停留在构建目录中
make srcpackage
现在您将在 build/package 目录中找到 tarball、spec 和 changes 文件。
使用 cmake 开发基于 zypp 的程序
libzypp-devel 包含一个 FindZypp.cmake
使用
FIND_PACKAGE(Zypp REQUIRED)
在您的顶级 CMakeLists.txt 文件中,您将获得 ZYPP_INCLUDE_DIR 和 ZYPP_LIBRARY 变量。
使用 zypp 构建系统进行开发
阅读
参考资料
ZYPP 自定义构建系统变量
定义了以下附加变量
- LIB_INSTALL_DIR
技巧和窍门
编译标志和定义
要为某些文件设置特殊的编译标志,请在 CMakeLists.txt 中添加以下内容,其中 ${files} 变量包含一个或多个源文件,${value} 变量包含任何值
SET_SOURCE_FILES_PROPERTIES( ${files} COMPILE_FLAGS -DSOMEDEFINE=\\"${value}\\" )
make uninstall?
请参阅 CMake FAQ。