【问题标题】:What is the meaning of cmake command linescmake命令行是什么意思
【发布时间】:2015-04-22 09:00:03
【问题描述】:

我正在尝试按照一些在线说明构建软件。

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

我的问题:

  1. cmake 之后的“../..”是什么意思?
  2. make后面的点有什么意义?
  3. 什么会'make installpyplusplus && cmake.' ?

【问题讨论】:

  • 请阅读this。我在其中添加 ../.. 是父目录的父目录(在 Unix 系统中,在 Windows 中为 ..\..

标签: unix directory cmake makefile


【解决方案1】:

cmake 应用程序会查找一个名为 CMakeLists.txt 的特殊文件。 所以通过运行:

cmake ../..

就像对cmakeCMakeLists.txt 是下面的两个目录,就像MERose 所描述的那样。

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

所以当你运行时:

make .

您告诉make 应用程序Makefile 文件在您的CWD 中。和跑步一样:

make

这会在您的 CWD 中查找 Makefile 文件。

结论,. 是 CWD,.. 是低一级。

EX:如果你的 CWD 是/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 生成的文件,它会触发重建。
最近更新 更多