创建一个跨平台的C++库

3
我想创建一个跨平台的2D游戏引擎,我想知道如何使用Makefile创建跨平台项目,以便可以使用自定义规则将其编译到我选择的平台上。我正在Windows环境下使用Visual C++ Express 2008进行开发,所以如果可以使用Visual C++ Express作为IDE将会很好。
我的目标平台是任天堂DS和PC。
请指导我该怎么做。
提前感谢您,Tamir。
2个回答

6
不要使用make,而是使用像cmake这样的跨平台工具,它会为你处理特定于平台的生成。在Windows上,它将生成项目文件供Visual Studio使用;在Linux上,它会为您生成GNU make文件。您可以设置它来查找正确版本的正确库以及其他所有内容。Cmake非常出色。
CMake不是编译器(make也不是)-它是一个跨平台的构建自动化系统。它允许您在任何平台上开发,并默认假定您正在为您正在运行的平台开发。如果您想执行其他操作,可以指定参数。然而,大部分“跨平台”功能仍留给您的代码。我还建议使用已在许多平台上进行过测试的库,例如Boost。使用Boost可以帮助保持所有代码在任何系统上平稳运行,并且使用它基本没有额外的开销。

为了理解它,CMake会处理编译等问题,但它只支持一些特定的平台?因为我还计划为任天堂DS编译(使用arm7 / arm9处理器)。 - user187418
我想我应该更清楚一些...我正在编辑我的答案。 - Travis Gockel
我已经了解boost,我认为它不能在DS上工作。 我想创建一个项目,可以通过点击build按钮生成Windows库和Nintendo DS库。DS库将使用arm编译器,而Windows库将使用Visual Studio,但两者都将共享相同的代码(我可以为两个平台处理)。 如果你能帮我设置这样的项目就太好了,我也想传递一个PLATFORM定义来知道我正在编译哪个平台。 - user187418
几乎所有的Boost都可以在 DS 上工作(我敢说全部,但是其中一些基于操作系统的内容我不太确定,但这并不多)。就设置方面而言,您可以使用编译标志,指定CMake在您的makefile中创建,这样您就可以说 make DSmake PC,它会为您设置正确的标记和定义。 - Travis Gockel
阅读CMake文档,它会告诉你所有需要知道的内容。基本上,在每个目录中都有一个CMakeList.txt文件,它指向目录中所需的文件、它们所依赖的内容(导入)以及它们应该如何构建。你可以在CMake中创建设置,并在你的C++代码中使用它们。只需阅读教程(http://www.cmake.org/cmake/help/cmake_tutorial.html),它非常好。 - Travis Gockel
显示剩余2条评论

1

我知道你可以使用Makefiles来进行#define操作,这是一种常见的用于替换代码块的技巧。还有一些方法可以检测平台,尽管这主要是针对Mac/Windows/Linux之间的差异。

此外,Travis可能是对的;让你的makefiles本身跨平台是非常好的,因为这样更容易设置构建服务器和其他工具。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接