美文网首页
CMake语法详解

CMake语法详解

作者: 佼佼者Mr | 来源:发表于2020-05-03 20:31 被阅读0次

什么是CMake

.在Android studio2.2及以上,构建原生库的默认工具是CMake.

.CMake是一个跨平台的构建工具,可以用简单的语句来描述所有平台的安装(编译过程),能够输出各种各样得makefile或者project文件,CMake并不是直接构建出最终的软件,而是产生其他工具的脚本,比如makefile,然后再根据这个工具的构建方式使用。

.CMake是一个比make更高级的编译配置工具,它可以根据不同的平台,不同的编译器,生成相应的makefile或者vcpro项目,从而达到跨平台的目的,Android studio利用CMake生成的是ninja,    ninja是一个小型的关注速度的构建系统,我们不需要关心ninja的脚本,知道怎么配置CMake就行。

.CMake其实是一个跨平台的支持产出各种不同的构建脚本的一个工具。

CMake源文件

1.可以包含空格,注释,命令,换行

2.以CMake编写的源文件,以CMakeLists.txt命名或以.cmake为拓展名

3.可以通过add_subdirectory()命令吧子目录的CMake源文件加起来。

4.CMake源文件中所有有效的语句都是命令,可以是内置命令或自定义的函数/宏命令。

CMake注释

#单行注释

#[[多行注释]]

CMake变量

CMake中所有的变量都是string类型,可以使用set()和unset()命令来声明或者移除一个变量。

变量的引用:

${变量名}

#声明变量 set(变量名 变量值) 如set(var 123)

#引用变量 var=${var}

CMake列表

列表也是字符串,可以把列表看作一个特殊的变量,这个变量有多个值。    

语法格式

set(列表名 值1 值2...值n)

或set(列表名"值1;值2;...值n")

列表的引用 ${列表名}

常用命令

cmake_minimum_required(VERSION 3.4.1)

指定最低需要版本

add_library()

添加一个库或者导入一个预编译库

include_directories()

设置头文件目录,

target_link_libraries()

将若干库链接到目标库文件

多个源文件处理

查找当前目录所有源文件,并将名称保存到DIR_SRCS,

aux_source_directory(.DIR_SRCS)

add_library(

        native-lib

        SHARED

        ${DIR_SRCS})

也可以使用file命令

多目录多源文件处理

主目录中的CMakeLists.txt中添加add_subdirectory(child)命令,指明本项目包含一个子项目的child。并在targe_link_libraries指明本项目需要链接一个名为child的库。子目录child中创建CMakeLists.txt,这里child编译为共享库。

add_library(

        native-lib-parent

        SHARED

        native-lib.cpp)

add_subdirectory(child)//child必须为子目录的名称

find_library(

        log-lib

        log)

target_link_libraries(

        native-lib-parent

        child

        ${log-lib})

#child目录下

add_library(# Sets the name of the library.

      child

        # Sets the library as a shared library.

        SHARED

        # Provides a relative path to your source file(s).

        native-lib-child.cpp)

find_library(# Sets the name of the path variable.

        log-lib

        log)

链接第三方库

将so库复制到main下面jniLibs文件夹,

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}-L${CMAKE_SOURCE_DIR}/../jniLib/${CMAKE_ANDROID_ARCH_ABI}")

target_link_libraries(# Specifies the target library.

fmod #第三方库名称

fmodl 

# included in the NDK.

        ${log-lib})

相关文章

  • Cmake详解

    一、Cmake语法详解 1、什么是CMake 在Android Studio 2.2及以上,构建原生库的默认工具是...

  • AndroidNDK——Cmake详解

    一、Cmake语法详解 1、什么是CMake 在Android Studio 2.2及以上,构建原生库的默认工具是...

  • CMake语法详解

    什么是CMake?在Android Studio 2.2 及以上,构建原生库的默认工具是CMake。CMake是...

  • CMake语法详解

    什么是CMake .在Android studio2.2及以上,构建原生库的默认工具是CMake. .CMake是...

  • Cmake语法详解

    1、什么是CMake? 在Android Studio 2.2及以上,构建原生库的默认工具是CMake。 CMak...

  • CMake语法详解

    1.注释 单行注释# 我是一行注释 多行注释#[[我是多行注释我是多行注释]] 2.变量定义与使用 在Cmake中...

  • cmake基础教程

    目录;cmake语法CMAKE_MINIMUM_REQUIREDSETMESSAGEINCLUDE_DIRECTO...

  • 十三、cmake语法

    cmake语法

  • cmake 常见命令

    cmake cmake_minimum_required命令语法:cmake_minimum_required(V...

  • 十四、编译ffmpeg

    关于cmake语法,请参考这篇文章十三、cmake语法 build_android.sh-->configure-...

网友评论

      本文标题:CMake语法详解

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