【问题标题】:determine whether cmake is executing from terminal or gui确定 cmake 是从终端还是从 gui 执行
【发布时间】:2017-06-15 04:08:26
【问题描述】:

CMakeLists.txt 中,有没有办法知道文件是从终端执行还是通过 gui(某种形式,例如 ccmakecmake-gui)执行?无论我运行的是 cmake 还是 ccmakeCMAKE_COMMANDCMAKE_EDIT_COMMAND 都会被填充。

我正在搜索variables,这两个似乎最有希望。我已经迷上了colorizing cmake output,那里的许多精彩答案都有其缺点。也就是说,我可以得到:

  1. 它在终端中按预期工作,但ccmake 中有转义序列。
  2. 它在终端中按预期工作,但 ccmake 终端被彩色输出 (LOL)覆盖

只是好奇是否有办法在CMakeLists.txt 中确定这一点。脚本模式 (-P) 的一些变量似乎很有帮助,但我想我首先需要知道哪个可执行文件(cmakeccmake)首先调用了我的CMakeLists.txt

【问题讨论】:

  • 据我所知,在 CMake 中没有办法区分 cmake 和 cmake-gui。你的用例是什么?无论如何它应该表现相同,其他一切都会令人惊讶。
  • 是的,我认为也无法区分。用例非常小,老实说,我想不出任何人甚至想要这个的另一个原因。我的库能够为用户编译其外部依赖项,但能够执行安装的最后步骤(将文件添加到需要提升权限的位置)。我添加了彩色输出以引起人们的注意(因为如果没有用户执行额外的步骤,我的应用程序就无法运行)。但是 GUI 不喜欢我的彩色输出 x0
  • 您的终端应该处理彩色输出。可能您将其直接添加到输出中,这是导致问题的真正原因。
  • 是的,这正是问题所在。我想我会坚持使用消息的警告变体,毕竟这就是它的用途

标签: cmake cmake-gui


【解决方案1】:

据我所知,无法区分代码是从 CMake 调用还是从 CMake-gui 调用的。代码应该以相同的方式运行,其他一切都会让用户感到惊讶。

您可以尝试检测 CMake-gui 的实例是否正在运行,但这很容易出错并且不适合实际用例。

【讨论】:

  • 太糟糕了。我可能只需要查看源代码并提交一个补丁,假设解决方案是非侵入性的。我在 Python 中看到了检测输出是去往终端还是管道到文件的能力,如果文件它们删除了颜色。无论如何,感谢您的参与:)
  • @svenevs,我来到这里是因为我偶然发现了与您完全相同的问题:运行 ccmake 时彩色输出不起作用。你找到解决方案了吗?或者,或者,您是否找到了如何让ccmake 正确解释彩色序列?非常感谢您提前提供的帮助!! (顺便说一句:这个问题+1!)
  • CMAKE_COLOR_MAKEFILE 有什么帮助吗?见cmake.org/cmake/help/latest/variable/CMAKE_COLOR_MAKEFILE.html
猜你喜欢
  • 2012-10-23
  • 1970-01-01
  • 2023-02-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-18
  • 1970-01-01
  • 2016-10-27
相关资源
最近更新 更多