我得到了 Box2D 项目源代码,并想编译它的测试平台部分。 项目文件夹包含以下文件夹:freeglu glui testbed(a demo) helloword(a demo) Box2D 构建 CMakeFiles
在所有不同的文件夹中有很多 CMakeLists.txt。 我在想我应该 cmake 所有这些文件,以便在所有需要的地方创建 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。
最佳答案
cmake 是一个 Makefile 生成器。
当您调用 cmake [path]
时,您要求它按照 中给出的说明在 当前目录 中生成一个 Makefile [路径]/CMakeLists.txt
通常cmake在工作的时候会输出一些信息,在没有错误的情况下,你可以输入“make”来执行你新创建的Makefile。
CMakeLists.txt 文件可以引用子目录中的其他CMakeLists.txt 文件,所以您通常只对CMakeLists.txt top 目录,而不是其他目录。
使用空的“build”目录是一种称为“out-of-source build”的技术,其中所有生成的文件(.o、可执行文件、Makefile、.anything)都在单独的“build”目录中生成,并且不与源文件混合。如果要全部清理,可以删除build目录的所有内容。
其实你可以把你的“build”目录放在任何地方,只要你给cmake最上面的CMakeLists.txt的正确路径。您甚至可以拥有多个构建目录。如果您同时需要多个不同的构建(使用不同的选项、不同版本的 gcc 等),这将非常有用。
在旧程序中,您也可以生成 Makefile,但使用 ./configure
(这称为自动工具。您可能已经遇到过)。 cmake 被认为是自动工具的继承者。
关于c++ - cmake .. 做什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12236642/