如何去在android应用jni我这里就不说明了。
这里主要来记录一些基本操作:
CMakeLists.txt:
add_library:将cpp文件编译成so动态库的语法
find_library:查找so动态库;在安卓系统中去查找,查看安卓种log一个库,把它命名成log-lib
target_link_libraries:作用就是一个so动态库关联的一个语法;比如把native-lib.cpp 编译成native-lib的so文件,那我们需要关联安卓log打印的一个库
在CMake里面注意到:${log-lib}。这个美元符号和一个大括号,这是CMake里面变量的使用
-------------------------------------------------------------------------------------------------------------------
注意的是:如果要进行下面操作,就得在配置文件中切换CMake的版本。因为3.10.2版本不会将信息打印出来。这里我切换为了3.6.0。每次打印都需要将app目录下的.cxx金额build文件删掉,重新运行才能看到打印结果
CMake使用变量的话,使用的是set(var hello),里面是变量名和变量值。不区分大小写
message(S{var})相当于log打印,会输出变量的值
include_directories(people/):将people文件夹下的所有内容放进搜素路径中
这两个以后都会挺常用的(打印CMake的当前路径和文件夹路径):
message(${CMAKE_CURRENT_LIST_FILE})
message(${CMAKE_CURRENT_LIST_DIR})
同时CMake还提供了逻辑操作:
例如:
IF(TRUE)
message("Hello")
ENDIF()
-------------------------------------------------------------------------------------------------------------------
实践练习:
1,在cpp文件创建一个文件夹,名为:people,再创建一个cpp类,命名为People
2,之后我们想法People这个类编译成安卓上的一个动态库
3,需要的操作:需要CMake里面 add_library 的操作,将我们对应的c++文件编译成库。其中SHARED指的就是编译成动态库,也可以改为STATIC(静态库)
例如;add_library(
//设置so文件的名称
people-lib
SHARED
//so文件的相对路径
people/people.cpp)
4,用native关联people。在target_link_libraries 加一行people-lib
5,在.cpp文件中,编写一个函数返回string。在.h文件中创建一个类,写一个方法调用cpp文件的函数,得到string
6,在native-lib.cpp中创建.h类对象。类对象调用方法获得string显示在屏幕上
实践练习操作:
people.cpp
#include "People.h"
std::string People::