【问题标题】:CMake, how to set different value in a configure_file in Build vs InstallCMake,如何在 Build vs Install 的 configure_file 中设置不同的值
【发布时间】:2021-08-01 13:15:22
【问题描述】:

我有一个简单的CMake project,带有 CTest 和 CPack。它使用 Lua C API 加载和执行名为 script.lua 的脚本文件。 此脚本在构建时与安装/打包时将位于不同的位置,它的位置是:

[build]  : ${CMAKE_CURRENT_SOURCE_DIR}/src/scripts
[install]: ../scripts (relative to app which is in bin directory)

我在这里想要实现的是让安装步骤重新生成 configure_file,然后使用新的 configure_file 重建,然后才继续执行正常的安装步骤,当然之后将 configure_file 恢复为原始状态。

感谢有关此问题的任何帮助。

【问题讨论】:

    标签: c cmake lua


    【解决方案1】:

    我的理解是CMake的configure_file命令在cmake程序的执行过程中发挥了全部作用。它在生成的 makefile 或 cmake 生成的任何其他构建系统组件中没有表示。因此,如果您想为安装和安装前测试配置不同的文件,

    1. 您需要针对这两种情况执行完全独立的构建(从执行 cmake 开始),并且

    2. 您需要使用cmake 命令行或执行环境的某些属性来传达所需信息,例如使用-D 选项在命令行上定义CMake 变量。

    我劝你不要走这条路。除了过于复杂之外,安装与测试不同的软件版本也是一种糟糕的形式。

    您有多种选择可以更好地发挥作用。其中有

    • 让程序本身能够接受 Lua 脚本的自定义位置。也就是说,让它识别用于此目的的命令行参数或环境变量。在安装前测试期间使用它。

    • 如果程序确实在运行时使用相对路径来定位脚本,那么只需(让 CMake)将脚本的副本放在构建树中的适当位置,以便程序在测试期间正常找到它.

    【讨论】:

      猜你喜欢
      • 2018-06-07
      • 2010-12-03
      • 1970-01-01
      • 2023-03-11
      • 1970-01-01
      • 2014-05-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多