CMake 的 -S 和 -H 选项有什么区别?

h0c*_*355 4 cmake

我花了很长时间寻找一种无需cd进入即可更改 CMake 构建目录的方法。

我最终找到了这个-H选项并用它制作了我的脚本。现在我输入cmake --help并直接看到以下输出:

$ cmake --help
Usage

  cmake [options] <path-to-source>
  cmake [options] <path-to-existing-build>
  cmake [options] -S <path-to-source> -B <path-to-build>
Run Code Online (Sandbox Code Playgroud)

我最近使用:

$ cmake --version
cmake version 3.14.0

CMake suite maintained and supported by Kitware (kitware.com/cmake).
Run Code Online (Sandbox Code Playgroud)

我认为在旧版本中这是缺失的。

-H尽管如此,我想知道和选项之间是否有什么区别-S。此外,我想知道它们是否可以安全使用。我在其他帖子中发现了这个问题,但尚未得到解答(例如此处:How to Tell CMake where to put build files?

Kam*_*Cuk 6

-H选项没有记录并且早在-S选项之前就存在。在选项存在之前,这在某种程度上被认为是一种“技巧” -S。该-H选项的目的是让开发人员的生活更轻松,但他们将其保留在发布版本中,因此人们开始使用它。自 cmake 3.13(我认为是 2018 年 11 月)以来,该-S选项可用,使其-H过时(或不过时?我不知道 cmake 开发人员的意图是什么)。

看到cmake 来源-H选项-S的行为完全相同。