首页 > 解决方案 > 多个debian包无依赖污染

问题描述

我正在尝试使用 CPack 创建多个 debian 包。我一直在关注以下文档:

然而,似乎任何install(COMPONENT)正在考虑用于最终包,包括那些在add_subdirectory(EXCLUDE_FROM_ALL).

考虑以下简单的 cmake 结构:

% cat CMakeLists.txt
cmake_minimum_required(VERSION 3.18)
project(p)
add_subdirectory(dep EXCLUDE_FROM_ALL)

# define our install + component
install(FILES main.py
  DESTINATION main
  COMPONENT main-comp
  )

# multiple deb package is desired:
set(CPACK_DEB_COMPONENT_INSTALL ON)

# disable not needed:
set(CPACK_BINARY_STGZ OFF)
set(CPACK_BINARY_TZ OFF)
set(CPACK_SOURCE_TGZ OFF)
#
set(CPACK_BINARY_DEB ON)
set(CPACK_PACKAGE_CONTACT foo@bar.com)
include(CPack)

% cat dep/CMakeLists.txt
install(FILES dep.txt
  DESTINATION dep
  COMPONENT remove-me
  )

和:

% touch main.py dep/dep.txt

在我的 debian 机器(buster)上,我看到的是:

% make package
[...]
CPack: - package: /tmp/p/bin/p-0.1.1-Linux-main-comp.deb generated.
CPack: - package: /tmp/p/bin/p-0.1.1-Linux-remove-me.deb generated.

我对与 COMPONENT 相关的包不感兴趣,有没有remove-me办法完全丢弃它以生成 debian 包列表。

以供参考:

% cmake --version
cmake version 3.18.4

用例dep实际上是git remote我无法修改的存储库(认为它是只读的)。

标签: cmake

解决方案


推荐阅读