美文网首页
Cmake简介

Cmake简介

作者: HlDDDDDDDDDDDD | 来源:发表于2019-10-23 10:25 被阅读0次

cmake

简而言之,cmake是Android Ndk开发过程中用到的C/C++编译工具,用来生成动态库(.so文件)。实现方式是通过项目下的CMakeLists.txt来指定编译的规则,即如何组织C/C++代码进行编译。

语法简介

以下是通过AS3.5新建的Ndk项目CMakeLists.txt的基础内容。

#1
cmake_minimum_required(VERSION 3.4.1)
#2
add_library(native-lib SHARED native-lib.cpp)
#3
find_library(log-lib log)
#4
target_link_libraries(native-lib log)

#1指定cmake版本号

#2添加一个target,类型是动态库。

add_library(<name> [STATIC | SHARED | MODULE]
            [EXCLUDE_FROM_ALL]
            source1 [source2 ...])

该方法有三个参数,第一个指定target的名字,最终生成的文件名是lib<name>.so。第二个指定编译类型,可用的有[STATIC | SHARED | MODULE],STATIC代表编译静态库即生成的结果是.a文件;SHARED代表编译动态库即通常用到的动态库.so文件;MODULE一般情况下用不上。第三个参数是源码的参数列表,即C/C++代码源文件路径。

#3查找已存在的库路径并存在变量中,在这里是将Android的log库放在变量log-lib中。在实际情况下我发现ndk自带的库可以省略此步骤,直接在第四步链接的时候指定库名就行了,cmake会自动搜索默认路径寻找相应库文件。

#4将log库与我们自己的native-lib库进行链接,也就是C/C++编译过程(预处理、编译、汇编、链接)的第四步链接的过程,这里就不展开叙述了。

以上就是CMakeLists.txt文件内容的基本介绍。

target

target是指通过add_executable() 或者 add_library()命令创建的变量。

target_include_directories与include_directories的区别

这两个命令都是用来指定.h头文件的路径,区别在于目录的范围不同。前者指定某个具体target的头文件路径,可以更好的控制头文件的可见性。而后者则是全局的类型,会对所有target指定头文件的路径。

相关文章

  • CMake 学习笔记

    引子Make or CMake,What's different?CMake简介[附]CMake常用指令 引子 人...

  • cmake 简介

    转自http://tzc.is-programmer.com/show/476.html CMake是一个跨平台的...

  • cmake简介

    著名的OpenCV采用了cmake作为工程的编译工具,下面简单介绍一下cmake CMakeLists.txt c...

  • Cmake简介

    cmake 简而言之,cmake是Android Ndk开发过程中用到的C/C++编译工具,用来生成动态库(.so...

  • CMake简介

    https://blog.csdn.net/afei__/article/details/81201039[htt...

  • CMake 简介和 CMake 模板

    转载自我的博客:CMake 简介和 CMake 模板。 如果你用 Linux 操作系统,使用 cmake 会简单很...

  • CMake使用手册

    简介 一、安装方式 CMake 安装路径参见 官网[https://cmake.org/download/],安装...

  • CMake教程(1):CMake简介

    CMake是一个跨平台的开源构建工具,可以用来管理构建并不依赖特定编译器。“CMake”这个名字是"Cross p...

  • CMake使用

    CMake简介 CMake是一个跨平台的、开源的构建工具。cmake是makefile的上层工具,它们的目的正是为...

  • android cmake 简介

    一、简单介绍 a、在 linux 平台下使用 CMake 生成 Makefile 并编译的流程如下: 二、简单使用...

网友评论

      本文标题:Cmake简介

      本文链接:https://www.haomeiwen.com/subject/xaphvctx.html