在使用 android studio 进行 集成的时候终于 将我之前对于 find_X 不懂的 搞懂了一点
说在前面
androidstudio 默认下载的cmake 为 cmake version 3.10.2 目前我的android studio 的版本是: Android Studio 4.0
可以自己下载最新版本的 cmake 然后进行配置 比方我在 local.properties cmake.dir=D\:\\softwarefiles\\chrome\\cmake-3.10.2-win64-x64 增加了 这个,还需要在 build.gradle 中增加android {
externalNativeBuild {
cmake {
path "src/main/cpp/CMakeLists.txt"
version "3.10.2"
}
}
}
复制代码当然,还是以自带的为准。因为 会有其他问题的.因为android为我们配置好了cmake 你一定要换个最新的 你需要自己实现一套 android.toolchain.cmake 否则 凉凉
因为每次编译都会 重复执行很多遍 ,所以在 build.gradle 中增加如下代码android {
defaultConfig {
ndk{
abiFilters "arm64-v8a"
}
}
}
复制代码这样只会编译指定平台的代码
初步印象
首先Android 默认 会有下面这些 选项:
if(NOT CMAKE_FIND_ROOT_PATH_MODE_PROGRAM)
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
endif()
if(NOT CMAKE_FIND_ROOT_PATH_MODE_LIBRARY)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
endif()
if(NOT CMAKE_FIND_ROOT_PATH_MODE_INCLUDE)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
endif()
if(NOT CMAKE_FIND_ROOT_PATH_MODE_PACKAGE)
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
endif()
复制代码
上述的选项 产生的影响如下
# 影响 find_package()
message(WARNING "CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ${CMAKE_FIND_ROOT_PATH_MODE_PACKAGE}")
# 影响 find_program()
message(WARNING "CMAKE_FIND_ROOT_PATH_MODE_PROGRAM ${CMAKE_FIND_ROOT_PATH_MODE_PROGRAM}")
# 影响 find_library()
message(WARNING "CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ${CMAKE_FIND_ROOT_PATH_MODE_LIBRARY}")
# 影响 find_file() 和 find_path()
message(WARNING "CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ${CMAKE_FIND_ROOT_PATH_MODE_INCLUDE}&#