我有一个由一个根CMakeLists和多个子CMakeLists(每个项目一个)组成的CMake项目。
我正在尝试使用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()下面是我尝试运行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
发布于 2019-08-17 05:09:06
对于每个用户here,可以通过向CPack谎报您正在使用的CMake生成器来解决此问题。
对于使用Unix Makefile作为CMake生成器的构建,CPack似乎只运行预安装目标。将变量CPack设置为系统上可用的其他生成器将更改CPACK_CMAKE_GENERATOR的行为,但CMake仍将使用为其指定的生成器进行构建。
链接线程中的用户似乎幸运地指定了忍者作为CPack CMake生成器,而我则成功地指定了XCode。
例如,您可以尝试添加像set(CPACK_CMAKE_GENERATOR Ninja)这样的行,这样CPack就不会尝试运行预安装目标。
https://stackoverflow.com/questions/36689963
复制相似问题