我想在安卓上使用Chipmunk2D。
在示例Chipmunk2D/android/Android.mk中,他们谈到使用CMake为Android构建Chipmunk2d。根据添加该文件时提交的注释,我使用Android-CMake构建一个静态库,然后将其链接到我的Android项目中。
我是这样引用的:
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编译的,而是为本地主机编译的,因为:
我目前的解决方案是编写一个类似于此的Android.mk:https://gist.github.com/kristianlm/2628615 (警告,这是过时的)。但是,我正在重新发明如何构建Chipmunk2D,我可能缺少项目作者的一些构建配置。
如何使用Chipmunk2D为安卓系统构建CMake?
发布于 2015-07-31 18:39:38
我就是这么做的。在顶级源目录中创建一个名为Android.mk的文件,如下所示。(不要忘记更改LOCAL_C_INCLUDES路径以匹配您的位置。)
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中
LOCAL_STATIC_LIBRARIES := chipmunk
...
$(call import-module,Chipmunk2D)还要确保NDK_MODULE_PATH环境var可以找到您的Chipmunk2D源目录。我的包括$(HOME)/src,因为我在$(HOME)/src/Chipmunk2D/
现在,如果您构建自己的Android应用程序,则会自动构建花栗鼠静态库:
$ cd MyAwesomeGame/Android
$ ndk-buildhttps://stackoverflow.com/questions/29666116
复制相似问题