标签: cpack

如何安装自定义CMake-Find模块

我使用CMake和CPack配置和打包我的库.我已经编写了自己的find-module FindMyLib.cmake.

如何告诉CMake/CPack将此文件添加到CMake模块目录中,以便将来的开发人员可以简单地指定FIND_PACKAGE(MyLib)来使用我的库?

cmake cpack

52
推荐指数
3
解决办法
6万
查看次数

如何在Windows上使用CMake + CPack + NSIS创建安装程序?

我想为我正在构建的基于C++的系统创建一个跨平台的安装程序.

我使用CMake构建所有内容,如果我可以使用CPack来制作安装程序,那将会很棒.我已经有CPack在OSX上工作,但我不能让它在Windows上工作.为了简化操作,我尝试在http://www.cmake.org/Wiki/CMake:Packaging_With_CPack上获取示例以使用NSIS安装程序软件.配置完成后,我无法在任何地方找到NSIS安装程序(使用VS 2010 Win64生成器).

也许我很困惑,但我认为只需要源代码,CMake,CPack和NSIS就可以创建安装包而无需Visual Studio.这可能吗?

完整教程的链接(http://www.cmake.org/Wiki/CMake:Component_Install_With_CPack跳过相关信息以获得NSIS工作而不提及生成器或编译器)将非常有用,或者我如何能够获得这个神秘的NSIS安装程序的基本解释会很棒.

以下示例为CMakeLists.txt:

cmake_minimum_required(VERSION 2.6.0 FATAL_ERROR)
project(StPMS)

add_library(mylib mylib.cpp)

add_executable(mylibapp mylibapp.cpp)
target_link_libraries(mylibapp mylib)

 install(TARGETS mylib 
   ARCHIVE
   DESTINATION lib
   COMPONENT libraries)
 install(TARGETS mylibapp
   RUNTIME
   DESTINATION bin
   COMPONENT applications)
 install(FILES mylib.h
   DESTINATION include
   COMPONENT headers)

set(CPACK_GENERATOR NSIS)
set(CPACK_PACKAGE_NAME "MyLib")
set(CPACK_PACKAGE_VENDOR "CMake.org")
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "MyLib - CPack Component Installation Example")
set(CPACK_PACKAGE_VERSION "1.0.0")
set(CPACK_PACKAGE_VERSION_MAJOR "1")
set(CPACK_PACKAGE_VERSION_MINOR "0")
set(CPACK_PACKAGE_VERSION_PATCH "0")
set(CPACK_PACKAGE_INSTALL_DIRECTORY "CPack Component Example")
SET(CPACK_NSIS_MODIFY_PATH ON)

INCLUDE(CPack)
Run Code Online (Sandbox Code Playgroud)

c++ installer nsis cmake cpack

23
推荐指数
1
解决办法
2万
查看次数

使用CMake的zip文件?

tl; dr版本: 是否可以使用CMake(> = 2.8)从某些文件生成zip文件并将打包的zip文件放在特定位置?

更长版本: 我有一个CMakeLists.txt,可以将我的项目构建为.exe文件.此exe文件将从zip文件中读取数据.现在,要在zip文件中打包的内容在我的git存储库中,以便它也可以编辑.但程序需要这个数据在一个zip文件中.因此,如果cmake脚本可以获取数据,将其放在zip文件中并将其放在exe旁边,那将是很好的.我已经听说过CPack,但我没有找到简单的例子,也不确定这是否适合我的任务.

这可能吗?如果是的话:怎么样?

zip cmake cpack

21
推荐指数
4
解决办法
1万
查看次数

CMake-CPack包装安装路径梦魇

我已经被CMake-CPack感到沮丧了将近一周.

不好的是CMake-CPack在线文档没有很好地记录这部分内容.

谷歌搜索后,我发现这个变量使用:

CPACK_PACKAGING_PREFIX          # NOT documented
CMAKE_INSTALL_PREFIX            # Documented, but the behavior seems weird
CPACK_INSTALL_PREFIX            # NOT documented
CPACK_PACKAGE_INSTALL_DIRECTORY # Documented, but this variable does NOT work as the online document described
CPACK_PACKAGING_INSTALL_PREFIX  # NOT documented
Run Code Online (Sandbox Code Playgroud)

我想要做的是:打包Debian软件包fakeroot make package,当安装软件包时,使用子目录sudo dpkg -i MyProgramPackageName安装它.也就是说,应该安装所有文件./usr/localMyProgramPackageName/usr/local/MyProgramPackageName-V.1.2.3

我一直在尝试(CMake 2.8.3和CMake 2.8.5)来调整这些变量.我尝试了很多组合,但都失败了.

唯一成功的方法是:

Set(CPACK_PACKAGING_INSTALL_PREFIX /usr/local/MyProgramPackageName-V.1.2.3)
Run Code Online (Sandbox Code Playgroud)

但是这个变量甚至没有记录,并且无法保证行为.如果您对我的问题感到困惑,请告诉我何时使用CPACK_PACKAGE_INSTALL_DIRECTORY?因为关于这个变量的文档描述真的很有吸引力,而且它确实是我想要的,但我无法让它工作.

请建议我.

彼得

debian install path cmake cpack

18
推荐指数
2
解决办法
7924
查看次数

如何用CPack构建debian包来执行setup.py?

到目前为止,我的项目只有.cpp 文件被编译成不同的二进制文件,我设法配置CPack来构建一个正确的debian包,没有任何问题.

最近我写了几个python应用程序并将它们添加到项目中,以及一些我想要合并到包中的自定义模块.

编写setup.py脚本之后,我想知道如何将这些文件添加到CPack配置中,setup.py以便在用户在系统上安装软件包时自动执行dpkg -i package.deb.

我很难找到有关如何配置CPack以安装自定义python应用程序/模块的相关信息.有没人试过这个?

python packages cmake deb cpack

15
推荐指数
1
解决办法
3713
查看次数

如何使cpack不向RPM添加所需的库?

我正在尝试将我们的构建系统转换为cmake并且使用它生成的RPM(通过cpack)遇到了一个有趣的问题:它会自动将它认为你的RPM所具有的所有依赖项添加到其所需的列表中库.

总的来说,这很好,但就我而言,这是灾难性的.不幸的是,我们构建的开发包最终安装了一个我们自己开发的工具,它使用rpm将它们安装在一个独立的RPM数据库中.这是愚蠢的,但我无法改变它.这意味着任何普通库将依赖的所有系统库(如libc或libpthread)都不在我们的开发包中使用的RPM数据库中.因此,如果我们的某个开发包的RPM列出了所需的系统库,那么我们就无法安装它,因为rpm会认为它们没有安装(因为它们列在普通数据库而不是正常数据库中)它被告知在安装我们的包时使用).我们当前构建的东西处理得很好,因为它没有列出任何系统库作为RPM中的依赖项,但是cpack会自动填充RPM的所需库列表并将系统库放在那里.我需要一种方法来阻止它这样做.

我尝试设置CPACK_RPM_PACKAGE_REQUIRES"",但没有效果.RPM cpack生成仍然最终会列出所需的系统库.在这一点上,我所能想到的就是复制RPM cpack生成器并将其破解以实现我想要的并使用它而不是标准的生成器,但我宁愿避免这种情况.有没有人知道如何让cpack停止使用所需的库填充RPM?

rpm cmake cpack

12
推荐指数
1
解决办法
3796
查看次数

cpack找不到库,此目录中不存在目标

EDIT ===================
Run Code Online (Sandbox Code Playgroud)

apr-1是apache可移植运行时,我自己下载并编译以创建共享库(因此它不是由cmake创建的).在目标系统上运行CPack后,我需要链接到这个库.

我的开发项目目录:

read_config/bin
           /libs
           /include
           /src
           /build
Run Code Online (Sandbox Code Playgroud)

对于我的CMakeLists.txt,一切安装正常,但现在我有一个链接问题,因为它找不到库的新位置.

我已经删除了,LINK_DIRECTORIES(${PROJECT_SOURCE_DIR}/libs)因为我现在不需要这个,因为我正在使用FIND_LIBRARY.

并添加了以下内容:

# Find the library in the libs folder
FIND_LIBRARY(APR_LIBS NAMES "apr-1" PATHS ${PROJECT_SOURCE_DIR}/libs)
# Print out the path to see if its correct
MESSAGE(${APR_LIBS})
# Link the library with the executable
TARGET_LINK_LIBRARIES(cfg ${APR_LIBS})

# Install the libs folder
INSTALL(DIRECTORY ${PROJECT_SOURCE_DIR}/libs/
    DESTINATION libs)

# Install the executable in the bin folder
INSTALL(TARGETS cfg 
    RUNTIME DESTINATION bin)
Run Code Online (Sandbox Code Playgroud)

一切都安装正常,但是当我检查可执行文件以查看它链接的库时,它找不到apr-1它在错误的地方看起来.

libapr-1.so.0 => not found
Run Code Online (Sandbox Code Playgroud)

这是因为我已将安装包解压缩到一个新位置,该位置与编译它的位置不同.从编译目录我得到这个,运行正常:

libapr-1.so.0 …
Run Code Online (Sandbox Code Playgroud)

c cmake cpack

11
推荐指数
1
解决办法
2785
查看次数

无法使用CMake为DMG安装配置背景图像

我在Mac OS X 10.7.5上使用CMake 2.8.10.2.

我已经配置CMake用Xcode构建一个简单的应用程序,创建一个空窗口.然后我尝试配置CMake以构建程序的DMG安装,使用以下命令指定背景图像:

设置(CPACK_DMG_BACKGROUND_IMAGE/path/to/image)

和自定义.DS_Store使用以下方法设置窗口大小和图标位置:

设置(CPACK_DMG_DS_STORE/path/to/DS_Store文件)

Xcode将成功构建应用程序并创建磁盘映像.当我安装图像时,它会显示正确的大小和图标位置,但背景始终设置为白色而不是指定的背景图像.

需要什么才能让背景在磁盘映像中正确显示?

dmg background-image cpack

11
推荐指数
1
解决办法
1719
查看次数

在CMake中"make dist"相当于

根据FAQ,CMake不会创建make dist目标,可以使用CPack创建源包.但是CPack只是使用与模式不匹配的所有文件制作源目录的tarball CPACK_SOURCE_IGNORE_FILES.

另一方面,make dist由autotools生成的文件只包含它所知道的文件,主要是编译所需的文件.

任何人都有一种聪明的方法来制作一个只包含在CMakeLists.txt(及其依赖项)中指定的文件的源包?

packaging cmake cpack

10
推荐指数
1
解决办法
1758
查看次数

没有出现cmake/cpack组件的debuginfo rpm包

CentOS6.9/cmake 3.6.1

在我的项目中,我正在尝试创建几个组件,而不是为它们构建运行时,开发和调试包,但是我无法为每个组件生成超过一个rpm.我创建了一个小项目来显示问题:

./include/Box.hpp

namespace room {

class Box {
public:
    Box(int volume);
    int get_volume() const;
private:
    int m_volume;
};

}
Run Code Online (Sandbox Code Playgroud)

./source/Box.cpp

#include "Box.hpp"

namespace room {

Box::Box(int volume)
    : m_volume(volume)
{
}

int Box::get_volume() const
{
    return this->m_volume;
}

}
Run Code Online (Sandbox Code Playgroud)

./source/app.cpp

#include "Box.hpp"

int main() {
    room::Box box(5);
    return box.get_volume();
}
Run Code Online (Sandbox Code Playgroud)

./CMakeLists.txt

cmake_minimum_required(VERSION 3.6)

project (home)

set(CMAKE_INSTALL_PREFIX "/usr/local")
set(CMAKE_BUILD_TYPE "RelWithDebInfo")

include_directories("include")
file(GLOB SRC_FILES "source/*.cpp")
file(GLOB HDR_FILES "include/*.hpp")

add_executable(${PROJECT_NAME} ${SRC_FILES})
install(FILES ${HDR_FILES} DESTINATION "include" COMPONENT devel)
install(TARGETS ${PROJECT_NAME} RUNTIME DESTINATION …
Run Code Online (Sandbox Code Playgroud)

c++ rpm cmake cpack

9
推荐指数
1
解决办法
489
查看次数

标签 统计

cpack ×10

cmake ×9

c++ ×2

rpm ×2

background-image ×1

c ×1

deb ×1

debian ×1

dmg ×1

install ×1

installer ×1

nsis ×1

packages ×1

packaging ×1

path ×1

python ×1

zip ×1