【问题标题】:CMake and CPack. Install path in config fileCMake 和 CPack。配置文件中的安装路径
【发布时间】: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

或类似的东西。

【问题讨论】:

    标签: cmake cpack


    【解决方案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 使用相同的路径。
    猜你喜欢
    • 2011-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多