cmake - CPack 尝试构建所有目标

标签 cmake deb cpack

我有一个 CMake由一个根组成的项目 CMakeLists和多个子CMakeLists (每个项目一个)。

我正在尝试使用 CPack为这些项目之一 (APP_client) 生成 .deb 文件。
然而,当我尝试运行 CPack 时,它首先运行“预安装”并尝试构建所有目标。
我只想构建所需的目标及其依赖项。

这是我添加到我的一个 CMakeLists 中的内容:

if(UNIX)
    INSTALL(
        TARGETS ${PROJECT_NAME} 
        COMPONENT ${PROJECT_NAME}
        DESTINATION ${PROJECT_INSTALL_PATH}
        )

    SET(CPACK_PACKAGE_DIRECTORY ${CMAKE_BINARY_DIR}/../deb)
    SET(CPACK_GENERATOR "DEB")
    SET(CPACK_PACKAGE_NAME ${PROJECT_NAME})
    SET(CPACK_PACKAGE_FILE_NAME ${PROJECT_NAME}-${PROJECT_version})
    SET(CPACK_DEBIAN_PACKAGE_NAME ${PROJECT_NAME})
    SET(CPACK_DEBIAN_PACKAGE_VERSION ${PROJECT_version})

    INCLUDE(CPack)
endif()

这是我尝试 tu run 时得到的结果 cpack -V
CPack: Enable Verbose
CPack Verbose: Read CPack config file: 
CPack Verbose: Read CPack configuration file: [...]/CPackConfig.cmake
CPack Verbose: Specified generator: DEB
CPack Verbose: Use generator: cmCPackDebGenerator
CPack Verbose: For project: APP_client
CPack: Create package using DEB
CPack Verbose: Read description file: [...]/CPack.GenericDescription.txt
CPack Verbose: [DEB] requested component grouping = ONE_PER_GROUP
CPack Verbose: Remove toplevel directory: [...]/../deb/APP_client/_CPack_Packages/Linux/DEB
CPack: Install projects
CPack: - Run preinstall target for: ROOT
CPack Error: Problem running install command: /home/gitlab-runner/cmake/bin/cmake --build . --target "preinstall"
Please check [...]/../deb/APP_client/_CPack_Packages/Linux/DEB/PreinstallOutput.log for errors
CPack Error: Error when generating package: APP_client

预安装失败,因为它正在尝试构建另一个目标并且无法链接它。

我正在使用 CMake 3.5

最佳答案

每一位用户 here ,可能可以通过向 CPack 说谎您正在使用的 CMake 生成器来解决此行为。

似乎 CPack 只为使用 Unix Makefiles 作为 CMake 生成器的构建运行预安装目标。设置变量 CPACK_CMAKE_GENERATOR到系统上可用的不同生成器将改变 CPack 的行为,但 CMake 仍将使用为其指定使用的任何生成器进行构建。

链接线程中的用户似乎很幸运地将 XCode 指定为 CPack CMake 生成器,并且我已经成功地指定了 Ninja。

例如,您可以尝试添加一行set(CPACK_CMAKE_GENERATOR Ninja)这样 CPack 就不会尝试运行预安装目标。

关于cmake - CPack 尝试构建所有目标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36689963/

相关文章:

docker - 为在 ubuntu 上安装 docker 创建本地 apt 存储库时出现问题

authentication - apt-get install quiet 和 --assume-yes 但检查包是否已签名

ubuntu - deb包中的conf文件和静态文件

cmake - CPack 一次构建多个包的问题

cmake - 如何在 NSIS 安装 (CMake) 中设置图标

build - 从命令行将静态库名称 (-I) 及其路径 (-L) 传递给 cmake

cmake - 使用 `vcpkg` 配置 CMake 项目的惯用方法是什么?

python - C 元与 cmake 依赖问题

windows - 将项目类型更改为 .wixproj 的 cmake 配置是什么?

c++ - cpack deb 生成器组件输出名称