CMake 和 CPack。配置文件中的安装路径

     2023-02-22     10

关键词:

【中文标题】CMake 和 CPack。配置文件中的安装路径【英文标题】:CMake and CPack. Install path in config file 【发布时间】:2016-03-29 12:19:06 【问题描述】:

有没有办法使用 CMakeinstallpackage(我需要一个 deb 包)targets /em>,安装路径是从 install-time 中的某个配置文件(例如 /etc/myconfig.cfg)读取的。我可以使用 shell 脚本来做到这一点,但我想使用 CMake 和 CPack 的可能性。我想要一个生成的 deb 包在安装时读取 myconfig.cfg

一个非常简单的启动例子CMakeLists.txt

cmake_minimum_required(VERSION 2.8.11 FATAL_ERROR)
project("My project")
add_executable(a.out main.cpp)

/etc/myconfig.cfg

set(INSTALL_PATH "/var/path1")

INSTALL_PATH = /var/path1

或类似的东西。

【问题讨论】:

【参考方案1】:

为什么不使用CMAKE_INSTALL_PREFIX?例如:

cmake -DCMAKE_INSTALL_PREFIX=/usr/boob ..

【讨论】:

1) 我必须启动 cmake,而不仅仅是 make,才能这样做。 2) 我不希望安装 deb 包的计算机有 cmake、gcc 等依赖项。只有编译的文件必须安装。据我了解,如果可以用 cmake 做这样的 deb 包,它将使用 cmake 脚本中的安装说明。 3)我的实际任务更复杂,很难手动管理。如果我知道如何做这个简单的例子,我会做其他所有事情 1.- 无论哪种方式,您都需要告诉 cmake 如何处理 deb 包的 CONTROL 脚本。我知道你刚刚开始 cmake,但你不能在没有背景的情况下直接跳到你想要或期望做的事情。 2.- 不需要,但您首先需要一些开发人员硬编码来完全自动化该过程。 3.- 手动是唯一的方法,我的朋友。我建议您查看有关 configure_file 的文档和示例,它们或多或少会帮助您迈出第一步。 我正在开发一个快速的 cgi 应用程序。每个新版本都必须安装在带有一些文件的新位置,并在以前的版本运行时启动。然后Web服务器的配置发生变化,必须停止并删除以前的版本。我已经问过这个问题,想知道如何自动化这个过程。我已经以非跨平台的方式使用 shell 脚本完成了此操作,并且希望在使用 cmake 编译项目时完成所有操作。但我不知道如何用 cmake 做某事。很丑。 @РоманКоптев,如果您阅读我给您的文档命令并找到有关它们的示例,您现在应该明白了。 我做到这一点的唯一方法是使用install(CODE|SCRIPT) 并创建add_custom_target(package "$CMAKE_COMMAND" -D -P)。我手动合并这些包,因为在这种情况下 CPack 会生成空包。这是非常丑陋的,尤其是。如果 smb 使用add_subdirectory 命令:install 命令的顺序不被保证;不可能创建自定义目标“安装”。 CMAKE_INSTALL_PREFIXconfigure_files 没用。它们只会在 cmake 启动时执行一次(而不是在目标机器上),然后您在每个 makemake installmake package 使用相同的路径。

CMake + CPack:安装整个目录(包括子文件夹)

】CMake+CPack:安装整个目录(包括子文件夹)【英文标题】:CMake+CPack:Installentiredirectory(includingsubfolders)【发布时间】:2016-09-2818:14:31【问题描述】:我正在尝试使用CMake和CPack创建安装包。一切正常,但我想通过一次调用而不是... 查看详情

使用 cmake 或 cpack 编辑 .bat

...软件的位置。比如说C:\\Users\\MySoftware我的所有.exe和python文件都使用cmake的目标选项进入其中。使用cpack,它将C:\\Users\\MySof 查看详情

使用 CMake 和 CPack 为一个组件创建包

...我使用set(CPACK_ARCHIVE_COMPONENT_INSTALLON)来获取两个不同的包文件 查看详情

如何将变量传递给cpack?

...个cmake项目,其中一个安装目标是文件集合。此文件根据配置(发布、调试...)而变化。我希望能够像这样安装文件:install(DIRECTORY$<TARGET_FILE_DIR:tgt>DESTINATIONbinCOMPONENTfiles)但是cmake 查看详情

如何更改使用 CPack 安装的可执行文件的名称?

】如何更改使用CPack安装的可执行文件的名称?【英文标题】:HowdoIchangethenameoftheexecutablethatI\'minstallingusingCPack?【发布时间】:2020-02-0219:58:08【问题描述】:如果这听起来微不足道,我会提前道歉。我是使用CMake和CPack的新手。我... 查看详情

CPack / CMake:每个 CPACK_GENERATOR 的不同安装前缀

】CPack/CMake:每个CPACK_GENERATOR的不同安装前缀【英文标题】:CPack/CMake:DifferentinstallationprefixesperCPACK_GENERATOR【发布时间】:2015-06-1911:44:12【问题描述】:如何为不同的CPACK_GENERATOR指定不同的安装前缀?例如:DEB包应该安装到/opt/pro... 查看详情

使用 CPack 打包时是不是需要 CMake 安装步骤?

】使用CPack打包时是不是需要CMake安装步骤?【英文标题】:doIneedtheCMakeinstallstepwhenpackagingwithCPack?使用CPack打包时是否需要CMake安装步骤?【发布时间】:2018-06-2613:10:56【问题描述】:阅读cmake/cpack文档,说明CPack将生成一个安装... 查看详情

InstallDirRegKey 的 CMake/CPack 命令

...ey【发布时间】:2013-08-1910:49:35【问题描述】:在NSIS脚本文件中,可以设置以下内容,以使用注册表项作为安装目录:InstallDirRegKeyHKCU"Software\\Test""RegEntry"我想知道是否可以从cmake文件设置此命令,以便自动生成NSIS脚 查看详情

cmake系列:wix打包(代码片段)

目录背景实现方案下载配置WIX启用CPack打包指定需要安装的文件背景简化最终用户的安装配置过程,方便最终用户使用。同时保护代码安全,防止人为打包有意无意的错误。实现方案下载配置WIX下载WIX3.11版本,链接&#x... 查看详情

cmake系列:wix打包(代码片段)

目录背景实现方案下载配置WIX启用CPack打包指定需要安装的文件背景简化最终用户的安装配置过程,方便最终用户使用。同时保护代码安全,防止人为打包有意无意的错误。实现方案下载配置WIX下载WIX3.11版本,链接&#x... 查看详情

如何使用 cpack/cmake 生成具有特定文件组织的 nuget 包?

】如何使用cpack/cmake生成具有特定文件组织的nuget包?【英文标题】:Howtogeneratenugetpackagewithspecificfileorganizationusingcpack/cmake?【发布时间】:2020-01-2010:01:04【问题描述】:我用cpack和cmake生成了两个nuget包。我的问题是在我的包中组... 查看详情

资源文件在使用 CMake 和 CPack 构建的 Mac OS X 应用程序包中包含两次

】资源文件在使用CMake和CPack构建的MacOSX应用程序包中包含两次【英文标题】:ResourcefilegetsincludedtwiceinMacOSXapplicationpackagebuiltusingCMakeandCPack【发布时间】:2014-05-0807:39:57【问题描述】:我正在尝试使用CMake和CPack来构建和打包MacOSX... 查看详情

从 cpack 组件中删除后缀

...CPack在此处描述了一个错误,其中单体构建在DEB包的md5sums文件中包含构建目录路径:https://gitlab.kitware.com/cmake/cmake/issues/16517由于我在CMake3.7中使用debian-stretch,因此该错误对我来说 查看详情

如何使用补丁文件修改 CPack 生成的 WiX XML?

】如何使用补丁文件修改CPack生成的WiXXML?【英文标题】:HowcanonemodifyCPackgeneratedWiXXMLsusingapatchfile?【发布时间】:2018-06-1223:58:42【问题描述】:我正在尝试添加功能以在安装某个安装程序的新版本之前卸载以前的版本。CPackWIX文... 查看详情

向 cpack 添加额外的命令 - NSIS 打包程序/安装程序

...用现有的CPack和NSIS为我的windows项目打包GeneratorConfig.cmake文件,我想在其中添加一个额外的命令,它将一个名为myProject.ini的.ini文件复制到%APPDA 查看详情

cmake设置install工程,分别设置头文件lib和dll的输出路径

...时安装的路径,使用命令:install。可以简单的设置安装文件的路径和文件夹:set(head_files  //要安装的头文件)install(TARGETS${head_files}DESTINATION${CMAKE_BINARY_DIR}/include)install(TARGETSmyLibDESTINATION${CMAK 查看详情

如何通过 CMake/CPack 在 NSIS 中设置向导图像?

...:2011-05-1708:00:54【问题描述】:我看到没有用于更改NSIS中的向导图像的CPACK_xxx变量(如CPACK_PACKAGE_ICON)。所以我复制了NSIS.template.in并修改了它。我可以这样做:!defineMUI_WELCOMEF 查看详情

cmake的缓存变量可以用于cpp源码中吗

...安装路径等等。在C++源码中使用缓存变量需要引入CMake的配置文件,该文件会将缓存变量定义为C++宏,从而可以在源码中使用。引入CMake配置文件的方法如下:cmakeCopycodeconfigure_file(config.h.inconfig.h)这将读取config.h.in文件中的内容,... 查看详情