CMake简单收录

8.1 CMake简介

  • CMake是一个跨平台的编译工具,能输出各种各样的makefile或project文件。
  • CMake是一个强大的自动化配置工具,通过读取脚本文件——CMakeLists.txt中的规则来构建编译系统。
  • CMake并不直接构建出最终的文件,而是生成标准的Makefile文件或其他需要的平台上的项目文件。

8.2 CMake安装

Android studio新建JNI项目时会生成基础的CMakeList.txt,修改该文件可以在项目中添加或修改项目各种配置属性。

PC本地的cmake安装可以在Download | CMake中下载最新版的CMake,按照解压后包中的README文件进行安装。

如 Linux中:

tar -zxvf cmake安装包   //解压缩cmake包

cd cmake包  //进入cmake包

./bootstrap && make && sudo make install   //运行安装程序

cmake --version    //查看cmake版本,检验是否安装成功

8.3 编译流程

  • Windows(未验证)
    • 创建build文件夹
    • 在build文件夹中执行 cmake .. 命令
    • 用Visual Studio打开生成的demo.sln,然后编译
  • linux
    • 依次输入以下命令:

mkdir build  //创建build目录

cd build   //进入build目录

cmake ..   //执行cmake配置并生成makefile,需要上级目录有CMakeLists.txt文件

make   //启动makefile文件

8.4 常用命令

CMakeLists.txt 的语法比较简单,由命令、注释和空格组成。其中命令是不区分大小写的。指令是大小写无关的,参数和变量是大小写相关的,推荐全部使用大写指令。符号 # 后面的内容被认为是注释。命令由命令名称、小括号和参数组成,参数之间使用空格进行间隔。

cmake_minimum_required(version 版本号)   //指定cmake的最小版本

project(项目名称)   //定义工程名称

set(var [value])   //显式定义变量

add_library(库名称  STATIC 代码文件名)  //编译静态库

add_library(库名称 SHARED 代码文件名) //编译动态库

add_executable(可执行程序名 代码文件名称)   //编译可执行程序

add_dependencies(target item1 item2...)  //指定target依赖与其他item, 这里的item必须是add_executable, add_library,

add_custom_target等命令创建的目标

 

link_directories(链接库目录)   //设置链接库目录

target_link_libraries(target item1 item2...)   //指定target需要连接item1, item2等

include_directories(包含目录)  //设置包含目录

add_definitions(-D宏名称)  //设置宏定义,如:add_definitions(-DLINUX)

file(GLOB ALL_FILE_PATH 文件目录)   //将目录中的文件添加到ALL_FILE_PATH中

add_subdirectory(src)  //添加子文件夹,会在执行完当前CMakeLists.txt后执行src子目录下的CMakeLists.txt

message(属性   消息)   //输出消息,含正常,警告,错误等属性的信息

8.5 预定义变量

PROJECT_SOURCE_DIR                 工程的根目录
PROJECT_BINARY_DIR                   运行cmake命令的目录,通常是${PROJECT_SOURCE_DIR}/build
CMAKE_INCLUDE_PATH                环境变量,非cmake变量
CMAKE_LIBRARY_PATH                 环境变量
CMAKE_CURRENT_SOURCE_DIR  当前处理的CMakeLists.txt所在的路径
CMAKE_CURRENT_BINARY_DIR   target编译目录,使用ADD_SURDIRECTORY(src bin)可以更改此变量的值
CMAKE_CURRENT_LIST_FILE        输出调用这个变量的CMakeLists.txt的完整路径
CMAKE_CURRENT_LIST_LINE       输出这个变量所在的行
CMAKE_MODULE_PATH               定义自己的cmake模块所在的路径
EXECUTABLE_OUTPUT_PATH       重新定义目标二进制可执行文件的存放位置
LIBRARY_OUTPUT_PATH              重新定义目标链接库文件的存放位置
PROJECT_NAME                           返回通过PROJECT指令定义的项目名称
CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS 用来控制IF ELSE语句的书写方式

  • 16
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值