cmake命令行的含义是什么?

7

我正在尝试按照网上的一些指南构建软件。

cd app
mkdir -p build/Release
cd build/Release
cmake ../..
make installpyplusplus && cmake .
make .

我的问题:

  1. cmake 后面的 "../.." 是什么意思或者是做什么用的?
  2. make 后面的点的意义是什么?
  3. 执行 'make installpyplusplus && cmake .' 会发生什么?

请阅读这篇文章。此外,我要补充说明的是,在Unix系统中,../..表示父目录的父目录(在Windows系统中则为..\..)。 - Antonio
1个回答

8

cmake 应用程序会寻找一个特殊的文件,称为 CMakeLists.txt。因此,通过运行以下命令:

cmake ../..

就像MERose所描述的那样,你可以告诉cmakeCMakeLists.txt在当前目录的两个目录下。

cmake命令会在当前工作目录(CWD,即您运行命令的目录)创建许多文件,其中一个名为Makefile的文件包含有关要编译/构建/复制/写入/其他哪些文件以及如何执行这些操作的规则。

因此,当您运行以下命令时:

make .

你在告诉make应用程序,Makefile文件在你的当前工作目录(CWD)中。这与运行以下命令相同:
make

它在你的当前工作目录中查找Makefile文件。

总之,.是当前工作目录,..是上一级目录。

例如:如果您的当前工作目录是/Users/yourname/

  • .代表/Users/yourname/
  • ..代表/Users/
  • ../.代表/Users/
  • ../..代表/

以此类推...

'make installpyplusplus && cmake .'会做什么?

当您使用&&时,如果第一个命令返回true(退出状态为零),则命令将按顺序执行。因此,在您所说的情况下,将运行make installpyplusplus,并且在完成后(它可以创建CMakeLists.txt,我不知道您在运行什么),如果返回true,则运行命令cmake .,如果CMakeLists.txt存在,则会正常运行。

额外福利:

如果您运行:

make -j4

您将把构建过程分为4个实例(您可以根据需要更改4个实例的数量)!如果您有多个处理器核心可用,则多线程技术可以使构建速度更快 :)

“make .”并不是将make指向当前目录;而是要求make系统创建当前目录。在大多数情况下这是没有意义的,但对于CMake生成的文件来说,它会触发重新构建。 - lericson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接