构建项目后运行CPack的奇怪错误。

时间:2015-02-10 07:03:33

标签: cmake cpack

我有以下简单项目:

的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。

调用的

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

1 个答案:

答案 0 :(得分:1)

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

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