一、目录结构

根据我的个人管理习惯我喜欢在app目录下的CMakeLists引入到CPP目录下如果有多个项目每个项目构建一个CMakeLists分开管理。

二、app目录下的CMakeLists语法

cmake_minimum_required(VERSION 3.4.1)

#设置编译完成后so库生成的路径为 app/libs(可根据自己的习惯设置)

#set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/libs/${ANDROID_ABI})

#引入src/main/cpp/testjni目录下的CMakeLists

ADD_SUBDIRECTORY(src/main/cpp/testjni)

#引入src/main/cpp/testjni2目录下的CMakeLists

ADD_SUBDIRECTORY(src/main/cpp/testjni2)

三、项目下的CMakeLists语法,以tesijni为例

#引入头文件目录

include_directories(include)

# 获取当前目录下的所有的文件(目录)的路径并保存到 all_source 变量中

file(GLOB all_source *.cpp *.c )

#引入all_source变量中的源文件编译为native-lib的库

add_library( native-lib

SHARED

${all_source} )

#引入libs目录中第三方的libopencv_java.so库

add_library(lib_opencv

SHARED

IMPORTED)

set_target_properties(lib_opencv

PROPERTIES IMPORTED_LOCATION

${CMAKE_SOURCE_DIR}/libs/${ANDROID_ABI}/libopencv_java.so)

find_library( log-lib

log )

target_link_libraries( native-lib

${log-lib}

lib_opencv)

四、build.gradle配置

defaultConfig {

applicationId "com.taiyao.tongzi"

minSdkVersion 17

targetSdkVersion 25

versionCode 3

versionName "2.0.1"

testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

externalNativeBuild {

cmake {

cppFlags "-frtti -fexceptions -ffast-math -O3"

arguments '-DANDROID_STL=gnustl_static' //支持C++异常处理标准模板快

arguments "-DANDROID_ARM_NEON=TRUE", "-DANDROID_TOOLCHAIN=clang"

}

}

ndk {

abiFilters 'armeabi-v7a'

}

}

sourceSets{

main{

jniLibs.srcDirs=['libs']

}

}

externalNativeBuild {

cmake {

path 'CMakeLists.txt'

}

}

cmake 多次编译_Part01_CMakeLists构建管理多个模块的C代码相关推荐

  1. 【Android NDK 开发】Android Studio 的 NDK 配置 ( 源码编译配置 | 构建脚本配置 | 打包配置 | CMake 配置 | ndkBuild 配置 )

    文章目录 I . 源码编译配置 II . 构建脚本配置 III . NDK 函数库打包配置 IV . Java 与 C 代码示例 V . CMake 配置 ( CMakeLists.txt ) VI ...

  2. java 自动化编译_构建Jenkins自动化编译管理环境

    今天研究了一下Jenkins,有了一个粗浅的认识,顺手把构建的过程说一下,后续慢慢补充: (1)Secure CRT 连接到Linux服务器 要注意的一点是,要搞好一个文件传输的路子,否则不好传东西. ...

  3. Bootstrap前端组件库+构建管理

    目录 构建管理 Grunt Sass JavaScript Bootstrap作为前端组件库 一些语法 媒体查询 辅助类 栅栏系统 补充 代码示例 媒体查询 网格系统 建立可伸缩的甚至是响应式组件的方 ...

  4. Windows下使用VS Code编译和构建LoRaWan开源节点代码

    Windows下使用VS Code编译和构建LoRaWan开源节点代码 1.下载LoRaWan节点端开源代码 2.构建LoRaMac-node的先决条件 2.1添加环境变量 3.使用VS Code构建 ...

  5. maven项目构建管理工具一站式全部搞定

    内容目录 一.maven的概述 二.maven环境搭建 三.maven常用命令 四.maven的坐标和仓库 五.创建maven项目 六.创建maven web项目 概述: maven是基于项目对象模型 ...

  6. 利用CMake搭建软件编译架构

    利用CMake搭建软件编译架构 0 写在前面的话 本博文主要介绍如何利用cmake组织软件编译,并且提供一个简单的软件编译架构的模板.大家可以根据自己实际情况进行改动,本文主要的内容: cmake 命 ...

  7. 使用Gradle进行项目构建管理

    使用Gradle进行项目构建管理 安装配置Gradle Gradle的安装与配置 创建项目 使用gradle init命令创建root项目 E:\code\myself\china-unicorn&g ...

  8. Qt之CMake和MinGW编译OpenCV

    这里编译的是最新版OpenCV3.4.3,编译过程比较曲折,大部分编译错误都可以查得到解决方法,也遇到了Google无果的错误,好在最后还是解决了,特此记录. 编译环境 win10-64bit Qt5 ...

  9. mysql5.7 cmake源码编译安装

    mysql5.7 cmake源码编译安装, -----该文章的知识点是一个大牛总结的,我这里只是加工了一下,非原创文章. 搜狐开源镜像站:http://mirrors.sohu.com/ 网易开源镜像 ...

最新文章

  1. usaco Job Processing(mark)
  2. 【腾讯三面】你能现场写一下LRU算法吗?
  3. Cell封面:王二涛组在丛枝菌根共生“自我调节”研究中取得重大进展(视频+漫画解读)...
  4. Delphi 2010 secondsBetween Bug
  5. EasyDSS高性能流媒体服务器前端重构(六)- webpack-dev-server 支持手机端访问
  6. 直接用自己服务器做图床可以吗_我花 9 块钱搭了一个“私人图床”
  7. 防抖与节流方案_前端ajax优化解决方案
  8. 【转载】Java中各种修饰符与访问修饰符的说明
  9. VS2010中的sln,suo分别是什么文件
  10. SQLserver通过链接服务器连接oracle
  11. Docker容器实现原理及容器隔离性踩坑介绍
  12. 在 Mac 上如何将 Better Zip 设置为自动更新?
  13. MongoDB在RHEL6.5下的安装
  14. leach算法的实现过程_LEACH分簇算法实现和能量控制算法实现(示例代码)
  15. 传奇服务器修改npc外观,传奇NPC里面图片修改方法
  16. ROC曲线面积AUC详解
  17. java 微服务 dubbo_Dubbo Spring Cloud 重塑微服务治理
  18. 为什么国外程序员爱用Mac?
  19. 计算机类sci期刊影响因子排名,【科研】全球最新SCI期刊影响因子排名:第一名187.040!...
  20. python用turtle画字母n、h_详解python使用turtle库来画一朵花

热门文章

  1. mysql报错ERROR 1045 (28000)
  2. 帮助你在移动设备上生成倾斜控制(重力控制)的旋转效果jQuery插件 - lenticular.js...
  3. H3C vrrp *** ipsec 基本配置
  4. ubuntu开发c/c++帮助文档
  5. 饭卡问题(0-1背包的变形)
  6. PHP linux spl_autoload_register区分大小写
  7. 1、maven笔记(一):构建项目
  8. 谁都会做:简单易行的祛斑法 - 健康程序员,至尚生活!
  9. 垃圾收集器(CMS收集器 , G1收集器…)
  10. Spring MVC的表单标签库详解