美文网首页
CMake介绍及其简单语法

CMake介绍及其简单语法

作者: yuLiangC | 来源:发表于2021-01-10 23:01 被阅读0次

    CMake介绍

    在Android studio2.2版本以上使用的构建原生库的默认工具。
    是一个跨平台的构建工具,可以用简单的语言来描述所有平台的安装(编译过程)。能够输出各种各样的makefile或者project文件。并不直接构建出最终的软件,而是产生其他工具的脚本(如makefile),然后依据这个工具的构建方式使用。
    CMke是一个比make更高级的编译配置工具,它可以根据不同的平台,不同的编译器,生成对应的makefile或者vproject项目,从而达到跨平台的目的。Android Studio利用CMake生成的是ninja。ninja是一个小型的关注速度的编译系统。我们不需要关系ninja的脚本,知道怎么配置CMake就可以了。
    CMake其实是一个跨平台的支持产出各种不同的构建脚本的一个工具。
    CMake源文件可以包含命令,注释,空格和换行。
    编写的源文件通常以CMakeLists.txt命名或以.cmake为扩展名。
    可通过add_subdirectory()命令把子目录的CMake源文件添加进来。
    源文件中所有有效的语句都是命令,可以是内置命令或者自定义的函数(宏)命令

    语法

    声明变量使用set(变量名 变量值) 如set(var 123)
    引用变量message来打印 message("var = {var}") 声明列表set(list 1 2 2 2 33 3 4 5) message("list ={list}")
    true 的常量值 :1,ON ,YES,TRUE ,Y 非0的值
    false的常量值 :0,OFF,NO,FALSE,N,IGNORE,NOTFOUND,空字符串,以-NOTFOUND结尾的字符串
    一元操作符,例如:EXISTS、COMMAND、DEFINED 等
    二元操作符,例如:EQUAL、LESS、GREATER、STRLESS、STRGREATER 等
    操作符优先级:一元操作符 > 二元操作符 > NOT > AND、OR
    示例:

    set(list 1 2 2 2 33 3 4 5)
    message("list = ${list}")
    while(NOT var STREQUAL "aaa")
        set(var "${a}x")
    endwhile()
    
    foreach(item 1 2 3)
        message("item =${item}")
    endforeach()
    

    函数自定义和调用

    function(func x y z)
        message("x=${x},y =${y},z =${z}")
    endfunction(func)
    
    func(1 2 3)
    

    宏命令定义和调用

    macro(mac x y z)
        message("x=${x},y =${y},z =${z}")
        message("my name is macro...")
    endmacro(mac)
    
    macro(1 2 3)
    

    变量的作用域

    全局层

    cache变量

    目录层

    在当前目录CMakeLists.txt中定义

    函数层

    函数中定义

    相关文章

      网友评论

          本文标题:CMake介绍及其简单语法

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