首页 文章

什么是cmake ..做什么?

提问于
浏览
22

我得到了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

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

3 回答

  • 40

    那么, .. 是父文件夹的简写,所以它可能会根据它在 Box2D_v2.2.1 中找到的任何内容起作用 .

  • 3

    cmake 是一个Makefile生成器 .

    当你调用 cmake [path] 时,你要求它按照 [path]/CMakeLists.txt 中给出的指令在当前目录中生成一个Makefile

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

    CMakeLists.txt文件可以引用子目录中的其他CMakeLists.txt文件,因此您通常只对 top 目录的CMakeLists.txt感兴趣,而不是其他目录 .

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

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

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

  • 6

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

相关问题