首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Chipmunk2D为安卓系统编译CMake

用Chipmunk2D为安卓系统编译CMake
EN

Stack Overflow用户
提问于 2015-04-16 05:35:27
回答 1查看 546关注 0票数 1

我想在安卓上使用Chipmunk2D

在示例Chipmunk2D/android/Android.mk中,他们谈到使用CMake为Android构建Chipmunk2d。根据添加该文件时提交的注释,我使用Android-CMake构建一个静态库,然后将其链接到我的Android项目中。

我是这样引用的:

代码语言:javascript
复制
cd Chipmunk2D/
cmake -DCMAKE_TOOLCHAIN_FILE=../android-cmake/android.toolchain.cmake \
      -DANDROID_NDK=~/ndk \
      -DCMAKE_BUILD_TYPE=Release \
      -DANDROID_ABI="armeabi" .
cmake --build .

其中Chipmunk2D是包含Chipmunk2D项目的文件夹,android包含android,而~/ndk是到android-ndk-r10的一个符号链接。

结果.a似乎不是为Android编译的,而是为本地主机编译的,因为:

  1. 在为我的主机编译并试图为Android编译之后,CMake什么也不做,也就是说,它认为目标已经完成。
  2. 当链接到Android时,抱怨“没有归档符号表(运行ranlib)”,并且对Chipmunk2D函数的未定义引用存在错误。

我目前的解决方案是编写一个类似于此的Android.mk:https://gist.github.com/kristianlm/2628615 (警告,这是过时的)。但是,我正在重新发明如何构建Chipmunk2D,我可能缺少项目作者的一些构建配置。

如何使用Chipmunk2D为安卓系统构建CMake?

EN

回答 1

Stack Overflow用户

发布于 2015-07-31 18:39:38

我就是这么做的。在顶级源目录中创建一个名为Android.mk的文件,如下所示。(不要忘记更改LOCAL_C_INCLUDES路径以匹配您的位置。)

代码语言:javascript
复制
LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

CHIPMUNK_SOURCES := src/chipmunk.c src/cpArbiter.c src/cpArray.c src/cpBBTree.c src/cpBody.c src/cpCollision.c src/cpConstraint.c src/cpDampedRotarySpring.c src/cpDampedSpring.c src/cpGearJoint.c src/cpGrooveJoint.c src/cpHashSet.c src/cpHastySpace.c src/cpMarch.c src/cpPinJoint.c src/cpPivotJoint.c src/cpPolyline.c src/cpPolyShape.c src/cpRatchetJoint.c src/cpRotaryLimitJoint.c src/cpShape.c src/cpSimpleMotor.c src/cpSlideJoint.c src/cpSpace.c src/cpSpaceComponent.c src/cpSpaceDebug.c src/cpSpaceHash.c src/cpSpaceQuery.c src/cpSpaceStep.c src/cpSpatialIndex.c src/cpSweep1D.c

LOCAL_MODULE    := chipmunk
LOCAL_SRC_FILES := $(CHIPMUNK_SOURCES)

LOCAL_C_INCLUDES := \
$(HOME)/src/Chipmunk2D/include

LOCAL_CFLAGS += -DCP_USE_DOUBLES=0 -DCP_USE_CGPOINTS=0 -D__ARM_NEON__

LOCAL_ARM_NEON := true

include $(BUILD_STATIC_LIBRARY)

然后,在您自己的项目中,将其添加到MyAwesomeGame/Android/jni/Android.mk

代码语言:javascript
复制
LOCAL_STATIC_LIBRARIES := chipmunk

...

$(call import-module,Chipmunk2D)

还要确保NDK_MODULE_PATH环境var可以找到您的Chipmunk2D源目录。我的包括$(HOME)/src,因为我在$(HOME)/src/Chipmunk2D/

现在,如果您构建自己的Android应用程序,则会自动构建花栗鼠静态库:

代码语言:javascript
复制
$ cd MyAwesomeGame/Android
$ ndk-build
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29666116

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档