cmake命令行的含义是什么?

boo*_*oon 5 unix directory makefile cmake

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

cd app
mkdir -p build/Release
cd build/Release
cmake ../..
make installpyplusplus && cmake .
make .
Run Code Online (Sandbox Code Playgroud)

我的问题:

  1. cmake做什么或意味着"../ .." 是什么意思?
  2. 后点有什么意义make
  3. 什么将'make installpyplusplus && cmake.' ?

gbu*_*any 6

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

cmake ../..
Run Code Online (Sandbox Code Playgroud)

这就像说给cmakeCMakeLists.txt低于两个目录,就像MERose描述.

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

所以当你跑:

make .
Run Code Online (Sandbox Code Playgroud)

您告诉make应用程序该Makefile文件位于您的CWD.它与运行相同:

make
Run Code Online (Sandbox Code Playgroud)

这将Makefile在您的CWD中查找该文件.

最后,.是CWD,..下面是一个级别.

EX:如果您的CWD是 /Users/yourname/

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

等等...

什么将'make installpyplusplus && cmake.' ?

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

奖金:

如果您运行:

make -j4
Run Code Online (Sandbox Code Playgroud)

您将在4个实例中分离构建过程(您可以根据需要更改4)!如果您有多个处理器核心可用,多线程魔术将使其更快地构建:)