2

我正在尝试使用 cmake 2.8.12 制作两个包:第一个包含共享库,第二个包含头文件。显然,我想要两个名称分别为libname和的包libname-dev,所以我install对共享库使用了没有指定组件的命令,COMPONENT dev对头文件使用了相同的命令。在此之前,我定义了一个空的默认组件名称。所以我有一个代码如下:

set(CMAKE_INSTALL_DEFAULT_COMPONENT_NAME "")
install(TARGETS libname DESTINATION /usr/local/lib)
install(FILES ${header_files} DESTINATION /usr/local/include COMPONENT dev)

但结果是,尽管默认组件名称为空libname-Unspecified,并且libname-dev都生成了。我觉得这种行为很奇怪,因为我似乎无法用之前描述的名称定义两个包。是否有任何想法如何以其他方式做到这一点?

4

1 回答 1

0

在 debian 的情况下:

给您的主要组件一些临时名称,例如“运行时”。

install(TARGETS my-target
    COMPONENT runtime
    DESTINATION ${INSTALLDIR}
)

然后删除后缀的组件名称,如下所示:

set(CPACK_DEBIAN_RUNTIME_PACKAGE_NAME "${CPACK_PACKAGE_NAME}")

如果它们提供与“CPACK_DEBIAN_RUNTIME_PACKAGE_NAME”等效的内容,也可以与其他生成器一起使用。

于 2021-10-04T08:45:55.557 回答