C++ 他做什么。。做

C++ 他做什么。。做,c++,makefile,cmake,box2d,C++,Makefile,Cmake,Box2d,我获得了Box2D项目源代码,并希望编译其中的测试床部分。 项目文件夹包含以下文件夹:freeglu-glui-testbed(演示版)和helloword(演示版) Box2D生成CMAKE文件 在所有不同的文件夹中都有许多CMakeLists.txt。 我想我应该制作所有这些文件,以便在所有需要的地方创建make文件。 我阅读了以下内容(如我所需的说明): 这辆车是做什么的。。做 构建文件夹中没有CMakeLists.txt。嗯,是父文件夹的简写,因此它可能会根据在Box2D_v2.2.1c

我获得了Box2D项目源代码,并希望编译其中的测试床部分。 项目文件夹包含以下文件夹:freeglu-glui-testbed(演示版)和helloword(演示版) Box2D生成CMAKE文件

在所有不同的文件夹中都有许多CMakeLists.txt。 我想我应该制作所有这些文件,以便在所有需要的地方创建make文件。 我阅读了以下内容(如我所需的说明):

这辆车是做什么的。。做
构建文件夹中没有CMakeLists.txt。

嗯,
是父文件夹的简写,因此它可能会根据在
Box2D_v2.2.1
cmake..
中找到的任何内容来操作。
使用
。/CMakeLists.txt
文件作为起点,在当前目录中生成makefile<在此之后执行的strong>make命令使用生成的makefile作为输入来构建程序。这便于将源代码和生成结果保存在不同的文件夹中。一般语法是:cmake source dir(当然,还有很多其他开关)。cmake是一个生成文件生成器

调用
cmake[path]
时,您要求它按照
[path]/CMakeLists.txt

通常,cmake在工作时会输出一些消息,在没有错误的情况下完成后,您可以键入“make”来执行新创建的make文件

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

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

事实上,您可以将“build”目录放在任何地方,只要您为cmake提供顶级CMakeLists.txt的正确路径。您甚至可以有几个构建目录。如果您同时需要几个不同的构建(使用不同的选项、不同的gcc版本等),那么它非常有用


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

@Alex Farber和Rook,当我在父文件夹中尝试cmake时,什么都没有发生。它提供了一种类似cmake的指南。是否有必要深入一步并创建上一个目录?推荐的使用cmake的方法与最初使用cmake的方法完全不同。。在Build文件夹中。我不会试图击败它。cmake维基的url已经改变:啊!谢谢!这消除了我的困惑。我试图在一个包含CMakeLists.txt的文件中运行cmake,方法是键入“cmake”‘没有’文件规范,我想我看到了一个显示的cmake手册页。也许我没有试对。:)如果我可以进一步扩展一下,实际的命令与我所想的不同。有一个
cmake-DBOX2D\u INSTALL=ON-DBOX2D\u BUILD\u SHARED=ON
。。而不仅仅是
cmake..
知道这意味着什么吗?@learner是的。通过向cmake调用添加选项,您可以提示它应该如何生成Makefile,可以激活一些功能或使用不同的模式。大多数情况下,您也可以通过在构建目录中键入“ccmake.”(注意点)来更改这些选项。然后,您将有一个小界面,列出Makefile生成选项。但是在“Box2D_v2.2.1”文件夹中应该有一个CMakeLists.txt文件。在“cmake..”中,双点标记表示CMakeLists.txt文件存在于目录层次结构“Box2D_v2.2.1/Build/”中向上的一个目录中。
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