cmake - 多个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
我无法修改的存储库(认为它是只读的)。
解决方案
推荐阅读
- php - PHP:检查加载的 TLS 证书是否可信
- list - Flutter ReorderableListView 与自定义对象
- azure-devops - 如何通过在 Azure DevOps 中运行查询来检索组织内的项目列表?
- reactjs - 图像加载后在 div 中滚动到底部
- docker-compose - 在 Docker Compose 中运行 Log stash 会引发错误
- python - Python 遍历浮点数组或列表
- c++ - 如何限制为 C++ 中的单个类创建的对象数量?
- google-sheets - Arrayformula 在对自己的列进行排序时中断(Google 表格)
- spring - 带有 Spring Cloud Data Flow 的 Spring Batch 数据库连接不足
- sql - 根据 Oracle 中的优先级分组