0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Cocos2d-x v4への移行 iOS編

Last updated at Posted at 2021-10-01

cocos2d-x v3.17.2のcpp templateをベースに
v4へのmigrationを行う解説を行っていきます

旧バージョンのcocos2d-xからv4へのアップデートに
関心はあるがあまりiOS, Androidには習熟していないよ
という方向けです

私の知見が助力になれば幸いです


1.確認環境

  • XCode 12.5.1

  • CocoaPods 1.10.2

  • CMake 3.15.3


2.Cocos2d-x v4ダウンロード

githubに履歴を残していますので
差分や動作の確認にお使いください。

cocos2d-x v3.17.2のテンプレートから始めます。

ダウンロードしたcocos2d-xを解凍してフォルダ名をcocos2dに変更後
既存のcocos2dフォルダを置き換えます。

cocos2d-x v4 ダウンロードリンク(https://www.cocos.com/en/)


3.iOSのビルド

基本的にはHow to migrate · GitBookを参考にしていますが
細かいところに差異があります

修正を適用したgitをアップロードしています->github


まず、v4でiOSでのビルドが通るように修正します v4からはiOSでもCMakeが利用されていますがここでは 既存のxcodeprojを利用するためにcocos2d-xエンジンのみ CMakeからxcodeprojを生成します

3.1 CMakeでcocos2d-xエンジンのXCodeプロジェクトを生成

cocos2d/cocos/CMakeList.txtの修正をします

  • cmake_minimum_requiredのセット
  • COCOS2DX_ROOT_PATHのセット
  • CocosBuildSet moduleのincludeをします

下記のようになります


cmake_minimum_required(VERSION 3.15)

# The version number
set(COCOS2D_X_VERSION 4.0)

set(COCOS_CORE_LIB cocos2d)
project(cocos2d_libs)

if(NOT DEFINED BUILD_ENGINE_DONE)
    set(COCOS2DX_ROOT_PATH ${CMAKE_CURRENT_LIST_DIR}/..)
    set(CMAKE_MODULE_PATH ${COCOS2DX_ROOT_PATH}/cmake/Modules/)

    include(CocosBuildSet)
endif()

cocos2d_cocos_cmakelists.png

cocos2d/cocosフォルダへ移動、ここでCMakeします

cd cocos2d/cocos

cocos2d/ios-buildフォルダを作成します、ここにprojファイルが生成されます

mkdir ../ios-build

CMakeを実行します

cmake . -GXcode -DCMAKE_SYSTEM_NAME=iOS -DCMAKE_OSX_SYSROOT=iphoneos -B ../ios-build

下の画像のような結果になれば成功です
1_cmake.png


3.2 xcodeprojの修正

では、既存のxcodeprojを修正していきましょう
HelloCpp.xcodeprojを開きます

2_open_proj.png


3.3 cocos2d-xを入れ替える

参照の切れているcocos2d_lib.xcodeprojを削除して
先ほど作成したcocos2d/ios-build/cocos2d_lib.xcodeprojに
置き換えます

3_cocos2dx_delete.png


3.3.1 Header Search Paths

既存のHeader Search Pathsを修正します
これはそのままで良いことが多いです
SimpleAudioEngineを使う場合は追加します

もとになるバージョンによってUser Header Search Pathsであったり
Header Search Pathsになっていますが、
3.17.2ではHeader Search Pathsに設定されているので
そちらを修正していきます

Project HellopCppの
Settings —> Search Paths —> Header Search Paths

5_replace_header.png

3.3.2 Other Linker Flagの修正

TARGETS HelloCpp-mobile
Build Settings —> Linking —> Other Linker Flag

下記にあるlinker flagを追加します

How to migrate · GitBookにはglfw3が含まれますが実際にはないので含みません


$(inherited)
$(PROJECT_DIR)/../cocos2d/external/Box2D/prebuilt/ios/libbox2d.a
$(PROJECT_DIR)/../cocos2d/external/jpeg/prebuilt/ios/libjpeg.a
$(PROJECT_DIR)/../cocos2d/external/freetype2/prebuilt/ios/libfreetype.a
$(PROJECT_DIR)/../cocos2d/external/webp/prebuilt/ios/libwebp.a
$(PROJECT_DIR)/../cocos2d/external/bullet/prebuilt/ios/libLinearMath.a
$(PROJECT_DIR)/../cocos2d/external/bullet/prebuilt/ios/libBulletDynamics.a
$(PROJECT_DIR)/../cocos2d/external/bullet/prebuilt/ios/libBulletCollision.a
$(PROJECT_DIR)/../cocos2d/external/bullet/prebuilt/ios/libLinearMath.a
$(PROJECT_DIR)/../cocos2d/external/bullet/prebuilt/ios/libBulletMultiThreaded.a
$(PROJECT_DIR)/../cocos2d/external/bullet/prebuilt/ios/libMiniCL.a
$(PROJECT_DIR)/../cocos2d/external/websockets/prebuilt/ios/libwebsockets.a
$(PROJECT_DIR)/../cocos2d/external/uv/prebuilt/ios/libuv_a.a
$(PROJECT_DIR)/../cocos2d/external/openssl/prebuilt/ios/libssl.a
$(PROJECT_DIR)/../cocos2d/external/glsl-optimizer/prebuilt/ios/libmesa.a
$(PROJECT_DIR)/../cocos2d/external/glsl-optimizer/prebuilt/ios/libglsl_optimizer.a
$(PROJECT_DIR)/../cocos2d/external/glsl-optimizer/prebuilt/ios/libglcpp-library.a
$(PROJECT_DIR)/../cocos2d/external/png/prebuilt/ios/libpng.a
$(PROJECT_DIR)/../cocos2d/external/curl/prebuilt/ios/libcurl.a
$(PROJECT_DIR)/../cocos2d/external/openssl/prebuilt/ios/libcrypto.a
$(PROJECT_DIR)/../cocos2d/external/chipmunk/prebuilt/ios/libchipmunk.a

// glfw3ファイルがないのでGitBookにはありますがここでは含んでいません
$(PROJECT_DIR)/../cocos2d/external/glfw3/prebuilt/ios/libglfw3.a

6_linker.png

3.3.3 VALID_ARCHSの修正

既存のVALID_ARCHSがある場合は置き換え
ない場合はUser Defined Settingsを追加します

PROJECT HelloCpp
Build Settings -> User-Defined に追加

9_valid_archs.png


DEBUG arm64 arm64e armv7s x86_64
RELEASE arm64 arm64e armv7s 

TARGETS HelloCpp-mobileに反映されていない場合
すでに設定されていることがあります
TARGETS HelloCpp-mobile -> Build Settings -> User-Defined を削除してください

3.3.4 Build Phaseの修正

TARGETS HelloCpp-mobile
BuildPhases -> Target Dependanciesにcocos2d(cocos2d_libs)
を追加する

7_dependancies.png!

Link Binary with Librariesに
Metal.frameworkとcocos2d_libs以下の
ライブラリ(libcocos2d.aやlib_ext*.a)を追加する

8_frameworks_1.png

3.3.5 Compile

以上でビルドできるようになりました

3.4 参照

次の記事 Cocos2d-x v4への移行 Android編

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?