【问题标题】:What does the `-H.` option means for CMake?`-H.` 选项对 CMake 意味着什么?
【发布时间】:2015-09-14 10:46:35
【问题描述】:

This answer 以前关于 CMake 的问题显示此命令行:

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

-H. 选项在这里执行什么任务? cmake --help-H 打印帮助...

我正在使用 CMake 3.2.3。

【问题讨论】:

    标签: cmake


    【解决方案1】:

    正如链接答案中提到的,它是一个未记录的选项,但查看源代码会发现它的效果:

    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 的当前文件夹,源目录可以作为位置参数给出(如果未找到,源文件夹也将是当前工作目录) .

    【讨论】:

    • 为什么没有记录? :O
    • @grisevg 有一个补丁提交给fix the documentation issue。但它被拒绝了。关于为什么不能记录或删除(如果确实存在风险),仍然没有令人满意的答案。开发团队似乎不支持这些选项供公众使用。
    • 我有cmake version 3.13.4,其中-H 别名为--help 人说--help,-help,-usage,-h,-H,/? Print usage information and exit.
    • 那么,那么...-H-S 有什么区别? - 设置项目“Home”似乎比仅仅设置源位置可以处理更多的边缘情况......编辑:根据下面的答案,看起来它们只是相同的选项,并且-S正在替换@987654334 @。 - 这根本不直观 IMO。但是,很高兴有人指出!
    【解决方案2】:

    The Hitchhiker’s Guide to the CMake 解释了 CMake 3.13 选项中的旧版和新版:

    • -H

      此内部选项未记录在案,但被社区广泛使用。

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

    • -B

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-21
      • 2011-12-28
      • 2020-10-12
      相关资源
      最近更新 更多