打开src/cocos2d-x-3.14.1/tests/cpp-tests的目录可以看到有很多和平台相关的文件夹
比如android, android-studio, linux, ios, mac, win10, win32,
所以说只要游戏写一次,按照编译指令就会生成对应的文件,比如编译android会生成对应的apk,ubuntu运行的话会生成对应的可执行程序,在前面的章节中有介绍。
这里主要看两个文件夹proj.android 和proj.linux
和两个目录Classes目录和Resources目录,根据它们的定义就很容易知道Resources是放资源文件的,Classes是放源码目录的。
cocos2d-x使用的是cmake构建工程,cmake后面需要专门的章节进行介绍,
因为懂得怎么写cmake就知道怎么构建工程,对理解cocos2d-x引擎整体的构建起到举足轻重的作用。
来看proj.android文件夹
进入proj.android文件夹,就是一个最简单的android工程,java部分几乎没有什么实现,很多都是android自动生成的文件,有几个地方需要自己改动:
res/values/strings.xml文件下的
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">CppTests</string>
</resources>
这里可以更改生成apk的名字,也可以更改程序的显示图片,最直接的做法就是替换res/drawable-Idpi中的icon.png和它命名一样的名字。
AndroidManifest.xml规定了程序的入口
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
我们最需要改的是jin目录下的Android.mk文件
其中LOCAL_SRC_FILES是重中之重,规定自己编写的文件路径位置,LOCAL_C_INCLUDES规定头文件位置。
android是通过自身的ndk开发调用生成cpp_tests_shared库的,这里就不讲ndk怎么实现,语言的本身只是更方便。
其实android系统的实现都是用的C++和C,通过java提供的jni功能完成所有的到java的转换。
app层用java可以更方便开发者快速有效地开发功能比较好的程序,而不需要关注底层的实现,需要明确注意client和implementation的身份。
说了一大段的废话,其实最重要的是上面标红色的部分。
最后再说一句它是用ant打包的。
再来看proj.linux构建linux程序
这个更简单只有一个main.cpp文件
#include "../Classes/AppDelegate.h"
#include "cocos2d.h"
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <string>
USING_NS_CC;
int main(int argc, char **argv)
{
// create the applic