Android CMake
libnative-lib.so
SHARED # 动态库
# cpp的源文件:把cpp源文件编译成 libnative-lib.so 库
${SOURCE}
)
查找一个 NDK工具中的 动态库(liblog.so)
思考:我如何知道 哪些库是可以写的,你怎么知道些一个log就可以?
答:请查看 D:\Android\Sdk\ndk\21.4.7075529\build\cmake\system_libs.cmake
思考:D:\Android\Sdk\ndk\21.0.6113669\toolchains\llvm\prebuilt\windows-x86_64\sysroot\usr\lib\arm-linux-androideabi\16\liblog.so
答:你怎么知道是在 21.4.7075529?,arm-linux-androideabi?,16?
答:?1(因为local.properties知道了NDK版本,或者是你当前的NDK版本)
答:?2(因为我的手机是arm32的 所以 == arm-linux-androideabi 而且还我运行过)
答:?3(因为 minSdkVersion 16)
find_library(log-lib
log )
native-lib是我们的总库,也就是我们在 apk/lib/libnative-lib.so
然后 把log库链接到 总库中去,总库的cpp代码就可以使用 android/log.h的库实现代码了
target_link_libraries(native-lib # 被链接的总库
${log-lib} # 链接的具体库
# getndk
)
log 信息输出的查看
以前的Cmake版本都是在output.txt, 现在最新版本Cmake在metadata_generation_stderr.txt或cmake_server_log,害我寻找了半天
想及时更新你的日志,请安装一次即可 or Linked_C++_Projects
在Build也可以查看,注意:是点击Sync Now 才会看到
#[[
(无) = 重要消息;
STATUS = 非重要消息;
WARNING = CMake 警告, 会继续执行;
AUTHOR_WARNING = CMake 警告 (dev), 会继续执行;
SEND_ERROR = CMake 错误, 继续执行,但是会跳过生成的步骤;
FATAL_ERROR = CMake 错误, 终止所有处理过程;
]]
message(STATUS “1DerrySuccessD>>>>>>>>>>>>>>>>>>>>>>>>>>>>”)
message(STATUS “2DerrySuccessD>>>>>>>>>>>>>>>>>>>>>>>>>>>>”)
message(STATUS “3DerrySuccessD>>>>>>>>>>>>>>>>>>>>>>>>>>>>”)
message(STATUS “4DerrySuccessD>>>>>>>>>>>>>>>>>>>>>>>>>>>>”)
message(STATUS “5DerrySuccessD>>>>>>>>>>>>>>>>>>>>>>>>>>>>”)
message(STATUS “6DerrySuccessD>>>>>>>>>>>>>>>>>>>>>>>>>>>>”)
message(STATUS “7DerrySuccessD>>>>>>>>>>>>>>>>>>>>>>>>>>>>”)
message(STATUS “8DerrySuccessD>>>>>>>>>>>>>>>>>>>>>>>>>>>>”)
message(STATUS “9DerrySuccessD>>>>>>>>>>>>>>>>>>>>>>>>>>>>”)
message(STATUS “0DerrySuccessD>>>>>>>>>>>>>>>>>>>>>>>>>>>>”)
message(“10 OldCmakeVersion:output.txt, NewCmakeVersion:cmake_server_log.txt”)
# 参考
1. [https://cmake.org/cmake/help/latest/index.html](https://cmake.org/cmake/help/latest/index.html)
2. [https://developer.android.google.cn/ndk/guides/cmake?hl=zh_cn#android_native_api_level](https://developer.android.google.cn/ndk/guides/cmake?hl=zh_cn#android_native_api_level)