如何理解cmake的两个命令行选项之间的区别?

时间:2015-07-21 04:37:04

标签: cmake

描述这两个命令行之间的区别:

C:\xxxxx> cmake -help

Usage

  $ cmake [options] <path-to-source>
  $ cmake [options] <path-to-existing-build>

指定源目录以(重新)为其生成构建系统 当前的工作目录。指定现有的构建目录 重新生成其构建系统。

最后的描述没有给我如何使用第一个或第二个。

你能解释一下吗?

2 个答案:

答案 0 :(得分:0)

使用时进行树内构建(cmake .),没有区别。

当您进行树外构建时,存在差异。

假设您的项目位于~/foo,当前目录为~/foo/build

您必须为第一次构建运行cmake ..。但是对于后续的重新配置,您可以使用cmake .,因为那里已有构建。

答案 1 :(得分:0)

这个命令:

cmake [options] <path>

的工作原理如下:

  • 如果&lt; path&gt; 不是有效的(即已配置的)CMake构建目录,则假定其包含CMakeList.txt。 CMake将当前工作目录配置为使用<path>/CMakeLists.txt作为源目录的构建目录。
  • 如果&lt; path&gt; 是有效的CMake构建目录,则该命令使用首次配置该构建目录时分配的源目录重新配置该目录

所以常见的使用模式是:

  • 初始配置:

    mkdir my-build-dir
    cd my-build-dir
    cmake [options] my-source-dir
    
  • 后续(重新)配置:

    cmake [options] my-build-dir # current-work-dir is not important
    
  • 使用未记录的选项进行替代(初始)配置:

    cmake -Hmy-source-dir -Bmy-build-dir [options] # cwd is not important