如何创建具有多个静态库的 JNI Android Studio 项目
How to create an JNI Android Studio Project with multiple static libs
我正在将我们的游戏从使用 ndk-build 转换为使用 Android Studio 和 CMake。
该应用是采用以下形式的 JNI 应用:
一个Java主activity(单个,非常基本的.java文件)
c++应用程序代码(游戏代码)
c++ 物理代码(编译并 linked 作为静态库)
c++ 图形代码(编译并 linked 作为静态库)
这3个文件编译成一个共享的.so lib,被mainactivity加载和运行。
这如何转化为 gradle 构建文件和 cmakelists?
我看过很多例子,只是 link 在外部静态库中,那是没有用的。我也需要编译它们,我希望它们显示在项目视图中,以便我可以编辑源代码。
如果我也可以将静态库 'projects' 放到其他应用程序中,同时保留编辑这些库源代码的能力(类似于 visual studio 项目文件,那也很好.
这可能吗?
非常感谢,
史蒂夫
CMakeLists.txt
add_library( physics STATIC
physics/src1.cpp physics/src2.cpp )
add_library( graphics STATIC
graphics/src1.cpp graphics/src2.cpp )
add_library( game SHARED
game/src1.cpp game/src2.cpp )
target_link_libraries( game
physics graphics
log
)
或者您可以将其拆分为多个文件:
physics/CMakeLists.txt
add_library( physics STATIC
src1.cpp src2.cpp )
graphics/CMakeLists.txt
add_library( graphics STATIC
src1.cpp src2.cpp )
CMakeLists.txt
add_subdirectory( physics )
add_subdirectory( graphics )
add_library( game SHARED
game/src1.cpp game/src2.cpp )
target_link_libraries( game
physics graphics
log
)
我正在将我们的游戏从使用 ndk-build 转换为使用 Android Studio 和 CMake。
该应用是采用以下形式的 JNI 应用:
一个Java主activity(单个,非常基本的.java文件)
c++应用程序代码(游戏代码)
c++ 物理代码(编译并 linked 作为静态库)
c++ 图形代码(编译并 linked 作为静态库)
这3个文件编译成一个共享的.so lib,被mainactivity加载和运行。
这如何转化为 gradle 构建文件和 cmakelists?
我看过很多例子,只是 link 在外部静态库中,那是没有用的。我也需要编译它们,我希望它们显示在项目视图中,以便我可以编辑源代码。
如果我也可以将静态库 'projects' 放到其他应用程序中,同时保留编辑这些库源代码的能力(类似于 visual studio 项目文件,那也很好.
这可能吗?
非常感谢,
史蒂夫
CMakeLists.txt
add_library( physics STATIC
physics/src1.cpp physics/src2.cpp )
add_library( graphics STATIC
graphics/src1.cpp graphics/src2.cpp )
add_library( game SHARED
game/src1.cpp game/src2.cpp )
target_link_libraries( game
physics graphics
log
)
或者您可以将其拆分为多个文件:
physics/CMakeLists.txt
add_library( physics STATIC
src1.cpp src2.cpp )
graphics/CMakeLists.txt
add_library( graphics STATIC
src1.cpp src2.cpp )
CMakeLists.txt
add_subdirectory( physics )
add_subdirectory( graphics )
add_library( game SHARED
game/src1.cpp game/src2.cpp )
target_link_libraries( game
physics graphics
log
)