什么是cmake ..做什么?

bat*_*man 30 c++ makefile cmake box2d

我得到了Box2D项目源,并希望编译它的testbed部分.项目文件夹包含以下文件夹:freeglu glui testbed(演示)helloword(演示)Box2D Build CMakeFiles

在所有不同的文件夹中有许多CMakeLists.txt.我在想我应该编写所有这些文件,以便在所有需要的地方创建make文件.我读了这个(作为我想要的指示):

wget http://box2d.googlecode.com/files/Box2D_v2.2.1.zip
unzip Box2D_v2.2.1.zip
cd Box2D_v2.2.1/Build
cmake ..
make
Run Code Online (Sandbox Code Playgroud)

什么是cmake ..做什么?build文件夹中没有CMakeLists.txt.

Off*_*rmo 49

cmake是一个Makefile生成器.

当你打电话cmake [path],你问它来生成一个Makefile当前目录下面给出的说明[path]/CMakeLists.txt

通常cmake在它工作时输出一些消息,并且在完成没有错误之后,你可以输入"make"来执行你新创建的Makefile.

的CMakeLists.txt文件可以引用其他的CMakeLists.txt在子目录中的文件,所以你通常只感兴趣的CMakeLists.txt中的顶级目录,而不是其他的.

使用空的"构建"目录是一种称为"源外构建"的技术,其中所有生成的文件(.o,可执行文件,Makefile,.anything)都在单独的"构建"目录中生成,而不是与源文件.如果要清除所有内容,可以删除构建目录的所有内容.

事实上,只要你给cmake提供顶级CMakeLists.txt的正确路径,你就可以把你的"build"目录放在任何地方.您甚至可以拥有多个构建目录.如果您需要同时使用多个不同的版本(使用不同的选项,不同版本的gcc等),这非常有用.

在旧程序中,您也生成Makefile,但使用./configure(这称为自动工具.您可能已经遇到过).cmake被认为是汽车工具的继承者.


Ale*_*x F 7

cmake ..使用../CMakeLists.txtfile作为起始点在当前目录中生成makefile .make命令,在此之后执行,使用生成的makefile作为输入构建程序.这样可以方便地保存源代码并在不同的文件夹中构建结果.一般语法是:cmake source-dir(当然,还有很多其他开关).


Roo*_*ook 6

嗯,..是父文件夹的简写,所以它大概会根据它在Box2D_v2.2.1.