【问题标题】:Exporting cmake-gui options导出 cmake-gui 选项
【发布时间】:2015-07-30 09:24:34
【问题描述】:

我有一个包含许多不同配置选项的库。我们通常使用cmake-gui 配置构建并勾选几个复选框。

我想仅使用 cmake 将其自动化为 .sh 脚本。

例如
在 GUI -> 选择一堆不同的选项
等效的 cmake 命令 -> cmake -D CMAKE_XXX=X -D CMAKE_XXY=XXY [a bunch of options here] ..

我如何找到与我从 GUI 选择的任意配置的“等效”cmake 命令行命令?

【问题讨论】:

  • 您认为您的问题得到解答了吗?
  • @Antonio 不是。答案讨论了如何使用等效选项调用 cmake,但问题有点不同。如何导出一组GUI选项到它的等效命令行选项?想象一下,您有一个大型项目,其中包含许多难以键入的长名称选项。打开 CMAKE GUI,勾选复选框,然后以某种方式复制等效的 cmake 命令行调用。这必须是可能的,因为 GUI 必须由 cmake cli 支持。
  • 啊,好的!我认为起点应该是在没有任何手动配置的情况下生成的 CMakeCache.txt 和从 cmake-gui 更改后的 CMakeCache.txt 之间的diff
  • 您找到解决方案了吗?

标签: c++ ubuntu build cmake cmake-gui


【解决方案1】:

解释了缓存变量的等效 cmake 命令here-D 选项)。请注意previous documentation was ambiguous,因此请务必检查最新的。

基本上:

-D<var>:<type>=<value>

您还必须指定类型以便以与通过 cmake-gui 过程相同的方式缓存变量。请注意,变量定义仅在第一次时是必需的:如果不再指定,将使用缓存的值。

【讨论】:

  • @PeterK 它可以工作,但行为不同。请查看this
  • 所以,它会像往常一样工作,但在 cmake-gui 中无法访问,这个问题的重点是如何摆脱所说的 gui =)
  • 这不能回答问题。 OP 问的是如何获得make 命令,这与在 CMake GUI 上看到的相同。
  • @Royi 真的。正如我在问题的评论中提到的,起点应该是在没有任何手动配置的情况下生成的 CMakeCache.txt 与从 cmake-gui 更改后的 CMakeCache.txt 之间的差异。一旦你看到它,你就可以开始思考如何自动处理它。如果您对此有疑问,可以在获得此输入数据后发布一个新问题,并且您在处理它时遇到了更具体的问题。
【解决方案2】:

点击“配置”按钮后,cmake-gui 会在构建目录中生成 CMakeVars.txt 和 CMakeCache.txt 文件。它们缓存您通过 GUI 配置的所有变量。

【讨论】:

    【解决方案3】:

    有同样的问题......正如你所问的那样,我在菜单中查找了一些选项并找到了它。 菜单工具 -> 显示我的更改

    弹出一个带有编辑字段的对话框,其中包含命令行选项或缓存文件选项的内容。

    是的

    附言我用的是 cmake 3.11.1

    【讨论】:

      【解决方案4】:

      只需在构建目录的根目录中读取名为 CMakeCache.txt (iirc) 的文件并在此处查看变量名称

      【讨论】:

      • 选项在那里,但你仍然需要把命令放在一起。需要一些脚本来组装等效的命令。
      • 您最好组装等效的 .cmake 文件 - 设置所有变量并将其处理到您的脚本中。您可以从项目的 CMakeLists.txt 顶部包含该文件,并且如果只有它存在,也可以有条件地执行它,这样在非脚本用例中就不会出现错误
      • @Xocoatzin 从 CMakeCache.txt 中提取值以在 cmake 命令行中传递它们是没有意义的:如果不带参数运行 cmake,您将获得完全相同的行为,因为现有的缓存值将是用过。
      • Antonio,是的,但重点是从缓存中学习那些变量名称一次,然后开发一个脚本以多次运行(可能来自其他脚本)来创建和配置 new 构建没有缓存的目录
      • @PeterK 可能你是对的,但让我们看看 OP 怎么说。
      【解决方案5】:

      您可以编写一个文件,其中包含要使用set(&lt;var_name&gt; &lt;value&gt;) 设置的所有变量,然后通过-C 将此文件传递给CMake 调用:

      cmake -C <fileWithInitialValues> <pathToSrcDir>
      

      文档:
      https://cmake.org/cmake/help/v3.3/manual/cmake.1.html

      【讨论】:

      • 这不能回答问题。 OP 所问的是如何获得与在 CMake GUI 上看到的相同的 make 命令。即如何将命令从 CMake GUI 导出到文本文件(或剪贴板)。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-28
      • 1970-01-01
      • 2021-08-24
      • 2014-04-24
      • 1970-01-01
      • 2016-06-15
      相关资源
      最近更新 更多