我有以下极简单项目:
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)
#include <iostream>
int main()
{
std::cout << "Hello, world!" << std::endl;
}
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
的内容似乎没有任何区别。
CPACK_INSTALL_SCRIPT
用户提供的额外CMake脚本。
如果设置此CMake脚本将由CPack在其本地[CPack-private]安装期间执行,该安装在打包文件之前完成。脚本不是通过例如:make install。
调用的
为什么不会显示我的包构建和我的警告消息?
答案 0 :(得分:1)
一个老问题,但答案是你需要使用绝对路径,如:
set(CPACK_INSTALL_SCRIPT ${CMAKE_SOURCE_DIR}/DoSomething.cmake)