“-H”是什么option表示CMake



CMake上前一个问题的答案显示了以下命令行:

cmake -H. -Bbuild -G "MSYS Makefiles"

-H.选项在此处执行什么任务?cmake --help-H打印帮助。。。

我使用的是CMake 3.2.3。

如链接答案中所述,这是一个未记录的选项,但查看源代码会发现其效果:

cmake::SetArgs():中

if(arg.find("-H",0) == 0)
  {    
  directoriesSet = true;
  std::string path = arg.substr(2);
  path = cmSystemTools::CollapseFullPath(path);
  cmSystemTools::ConvertToUnixSlashes(path);
  this->SetHomeDirectory(path);

最后一个调用SetHomeDirectory实际上设置了项目的源目录。-B选项(也未记录)反过来设置二进制目录。

如果没有设置这些选项,二进制目录将是执行cmake的当前文件夹,并且源目录可以作为位置参数给定(如果找不到,源文件夹也将是当前工作目录)。

《CMake漫游指南》解释了CMake 3.13选项中的传统和新选项:

  • -H

    这个内部选项没有文档记录,但被社区广泛使用。

    已在3.13中替换为-S的官方源目录标志。

  • -B

    从CMake 3.13开始,-B是一个官方支持的标志,可以正确处理空格,并且可以独立于-S或-H选项使用。

最新更新