我有以下非常简单的项目:
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
的内容似乎没有任何区别。
根据文献资料
CPACK_INSTALL_SCRIPT
用户提供的额外CMake脚本。 如果设置,CMake脚本将由CPack在其本地CPack-私有安装过程中执行,该安装是在打包文件之前完成的。脚本不被调用,例如:。
为什么我的包不生成,我的警告信息不显示?
发布于 2016-11-14 10:16:26
一个老问题,但答案是您需要使用绝对路径,如下所示:
set(CPACK_INSTALL_SCRIPT ${CMAKE_SOURCE_DIR}/DoSomething.cmake)
https://stackoverflow.com/questions/28425887
复制