CPack尝试构建所有目标

时间:2016-04-18 09:21:48

标签: cmake deb cpack

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

我正在尝试使用CPack为其中一个项目(APP_client)生成.deb文件。 然而,当我尝试运行CPack时,它首先运行'preinstall'并尝试构建所有目标。 我想只构建所需的目标及其依赖项。

以下是我添加到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()

这是我尝试运行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

1 个答案:

答案 0 :(得分:0)

每位用户here可能通过向CPack询问您正在使用的CMake生成器来解决此问题。

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

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

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