【问题标题】:Strange error running CPack after building a project.构建项目后运行 CPack 时出现奇怪的错误。
【发布时间】:2015-02-10 07:03:32
【问题描述】:

我有以下非常简单的项目:

CMakeLists.txt

cmake_minimum_required(VERSION 2.8.6)
project(myapp)

add_executable(myapp myapp.cpp)
install(TARGETS myapp RUNTIME DESTINATION bin)

set(CPACK_PACKAGE_NAME "MyApp")
set(CPACK_PACKAGE_VERSION_MAJOR 1)
set(CPACK_PACKAGE_VERSION_MINOR 0)
set(CPACK_PACKAGE_VERSION_PATCH 0)
set(CPACK_INSTALL_SCRIPT DoSomething.cmake)

include(CPack)

myapp.cpp:

#include <iostream>

int main()
{
    std::cout << "Hello, world!" << std::endl;
}

DoSomething.cmake

message(WARNING "This message should be displayed.")

项目构建良好,但是当我尝试运行 CPack 时遇到问题:

nathan@nathan-desktop:/tmp/myapp/build$ cpack
CPack: Create package using STGZ
CPack: Install projects
CPack: - Install scripts: DoSomething.cmake
CPack: - Install script: DoSomething.cmake
CPack Error: Error when generating package: MyApp

这是什么意思?错误是什么? CPack 似乎没有生成任何日志或提供任何进一步的详细信息。注释掉DoSomething.cmake 的内容似乎没有任何区别。

根据the documentation

CPACK_INSTALL_SCRIPT

用户提供的额外 CMake 脚本。

如果设置此 CMake 脚本将由 CPack 在其本地 [CPack-private] 安装期间执行,该安装在打包文件之前完成。该脚本未被调用,例如:make install。

为什么不显示我的包构建和警告消息?

【问题讨论】:

  • 您是否尝试过检查是否区分大小写以防消息未解析,但 MESSAGE 已解析?
  • @hbdgaf: 但是为什么即使我注释掉那一行,也会出现错误呢?
  • 使用cpack --verbose

标签: cmake cpack


【解决方案1】:

一个老问题,但答案是您需要使用绝对路径,如下所示:

set(CPACK_INSTALL_SCRIPT ${CMAKE_SOURCE_DIR}/DoSomething.cmake)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-03
    • 2023-03-07
    • 1970-01-01
    • 2017-07-07
    相关资源
    最近更新 更多