Skip to content

Instantly share code, notes, and snippets.

@qiaohaijun
Last active June 12, 2017 03:38
Show Gist options
  • Select an option

  • Save qiaohaijun/3b1fb69150a4f44ab53d9de63e5095f2 to your computer and use it in GitHub Desktop.

Select an option

Save qiaohaijun/3b1fb69150a4f44ab53d9de63e5095f2 to your computer and use it in GitHub Desktop.

cmake 是什么

  1. cmake 是软件构建工具,据说是比makefile要先进,可以节省人力成本。
  2. cmake 和bazel一样,是一种DSL

我的问题

  1. cmake 如何定义变量
  2. cmake 如何定义函数
  3. cmake 如何定义逻辑跳转

cmake 的优点

cmake 的关键字

cmake 解析

  1. CMakeLists.txt(注意大小写)
  2. 如果工程有多个目录,需要确保每个管理的目录都存在一个CMakeLists.txt

cmake 语法

  1. project(hello)
  2. set(SRC_LIST main.c)
  3. message(STATUS "This is a BINARY dir" ${HELLO_BINARY_DIR})
  4. message(STATUS "This is a SOURCE dir" ${HELLO_SORUCE_DIR})
  5. add_excutable(hello SRC_LIST)

从上面看,这里和Makefile 的不同

  1. 没有指定-I -L 这些指定头文件以及动态库的路径

cmake 生成的文件列表

  1. CMakeFiles
  2. CMakeCache.txt
  3. cmake_install.cmake
  4. Makefile

cmake语法

project语法

  1. PROJECT(projectname [CXX] [C] [Java])
  2. 这个语法省略了两个隐含变量 _BINARY_DIR 以及 _SRC_DIR

set 语法

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment