在Android NDK中包括GLE到CMakeLists

在Android NDK中包括GLE到CMakeLists,android,android-ndk,java-native-interface,Android,Android Ndk,Java Native Interface,在Android NDK旧版本中,我们包括如下内容: LOCAL_LDLIBS += -lGLESv1_CM 但在最新版本中,Android使用CMakeLists而不是Android.mk来实现同样的目的。那么,如何将GLES/GLES2/GLES3依赖项添加到CMakeList文件中呢?谢谢大家! gradle脚本ndk模块和cmakelist外部工具之间的区别在于定义脚本的方式。在这种情况下,, 您需要创建CMake脚本(CMakeLists.txt,并更改gradle文件以激活外部工具

在Android NDK旧版本中,我们包括如下内容:

LOCAL_LDLIBS += -lGLESv1_CM

但在最新版本中,Android使用CMakeLists而不是Android.mk来实现同样的目的。那么,如何将GLES/GLES2/GLES3依赖项添加到CMakeList文件中呢?谢谢大家!

gradle脚本ndk模块和cmakelist外部工具之间的区别在于定义脚本的方式。在这种情况下,, 您需要创建CMake脚本(CMakeLists.txt,并更改gradle文件以激活外部工具):

CMakelists:

cmake_minimum_required(VERSION 3.4.1)

# now build app's shared lib
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall")

add_library(gljni SHARED
            your_code.cpp)

# add lib dependencies
target_link_libraries(gljni
                      android
                      log 
                      EGL
                      GLESv2) #here you can put your opengl linking library. 
命令target_link_libraries指定要链接的库

在gradle文件中,您需要指定外部本机构建,添加cmake选项,如编译器、android本机版本等

 externalNativeBuild {
            cmake {
                // Available argumetns are inside ${SDK}/cmake/.../android.toolchain.cmake file
                arguments '-DANDROID_PLATFORM=android-9',
                          '-DANDROID_TOOLCHAIN=clang', '-DANDROID_STL=gnustl_static'
            }
        }
希望这有帮助

干杯


Unai。

我试过了,但它仍然解决了最后一个问题,它说对GL函数的引用未定义,请看这张照片,尝试将“android”关键字添加到目标链接库。这很奇怪,因为opengl位于NDK内部,所以不需要指定库的位置。您使用的函数是opengl版本使用的函数?