前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >跨平台编译工具-CMake的语法特性与常用变量

跨平台编译工具-CMake的语法特性与常用变量

作者头像
极客开发者
发布2022-01-18 14:28:02
1.1K0
发布2022-01-18 14:28:02
举报
文章被收录于专栏:极客开发者极客开发者

最近在学习 Linux 下的 C+ 开发的编译知识,总结出该系列笔记,这是第五篇,可以通过以下链接阅读之前的笔记:

1. Linux中编译C++代码的g++工具,以及g++的常用操作指令

2. Linux下C++命令行编译示例

3. Linux下的GDB调试器常用指令

4. Linux下C++命令行调试实战

1. 概述

  • Cmake (Cross Platform Make) 是一个跨平台的编译工具,可以用简单的语句来描述跨平台的编译过程
  • CMake已经成为了大部分C++开源项目的首要编译工具

在不同的操作系统上,我们可以使用不同的编译工具,比如 windows 中使用 Visual Studio 的开发套件, mac 中使用 xcode 开发套件,Linux 中使用 Makefile 结合 g++ 编译,那如果我们使用 cmake 就可以解决了跨平台的问题。

2. cmake 基础知识

2.1. cmake 的基本语法特性

参数使用小括号包裹起来,参数之间使用空格或者分号隔开。cmake的指令不区分大小写,但是参数严格区分大小写,如下示例

cmake指令的变量使用 ${变量} 的形式读取变量,但在 IF 逻辑判断中,直接输入变量名称即可,如上面示例代码中的 HELLO

2.2. cmake的重要指令和常用变量

  • cmake_minimum_required : 指定cmake最小版本要求
  • project : 定义工程名称,并可以指定工程可支持的语言,语法格式为 project(项目域名 语言),如下示例
  • set : 显示定义变量
  • include_directories : 向工程中添加多个头文件搜索路径,相当于指定 g++-I 参数
  • link_directories : 向工程中添加多个库文件搜索路径,相当于 g++-L 参数
  • add_library : 生成库文件
  • add_compile_options : 添加编译参数
  • add_excutable : 生成可执行文件
  • target_link_libraries : 为目标可执行文件添加需要的共享库
  • add_subdirectory : 向当前工程添加存放源文件的子目录,并可以指定中间二进制和目标二进制存放的位置
  • aux_source_directory : 发现一个目录下所有的源代码文件并将列表存储在一个变量中,这个指令临时被用来自动构建源文件列表。

2.3. Cmake 常用变量

  • CMAKE_FLAGS : gcc 编译选项
  • CMAKE_CXX_FLAGS : g++ 编译选项
  • CMAKE_BUILD_TYPE : 编译类型(Debug,Release)
  • CMAKE_BINARY_DIRPROJECT_BINARY_DIR<projectname>_BINARY_DIR
  1. 这三个变量指代的内容是一致的
  2. 如果是 in binary build ,指的就是工程顶级目录
  3. 如果是 out-of-binary 编译,指的是工程编译发生的目录
  4. PROJECT_BINARY_DIR 跟其他指令稍有区别,但这里可以理解他们是一致的
  • CMAKE_SOURCE_DIRPROJECT_SOURCE_DIR<projectname>_SOURCE_DIR
  1. 这三个变量指代的内容是一致的,不论采用何种编译方式,都是工程经层目录
  2. 如果是 in source build ,跟 CMAKE_BINARY_DIR 变量一致
  3. PROJECT_SOURCE_DIR 跟其他指令稍有区别,但这里可以理解他们是一致的
  • CMAKE_C_COMPILE : 指定C编译器
  • CMAKE_CXX_COMPILE : 指定C++编译器
  • EXECUTABLE_OUT_PATH : 可执行文件输出的存放路径
  • LIBRARY_OUTOUT_PATH : 库文件输出的存放路径
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-11-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 极客开发者up 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 概述
  • 2. cmake 基础知识
    • 2.1. cmake 的基本语法特性
      • 2.2. cmake的重要指令和常用变量
        • 2.3. Cmake 常用变量
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档