美文网首页
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简介

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