确定 cmake 是从终端还是从 gui 执行

determine whether cmake is executing from terminal or gui

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

我正在搜索 variables and these two seemed the most promising. I have become enamored with colorizing cmake output,那里的许多精彩答案都有其缺点。也就是说,我可以得到:

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

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

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

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