从零开始 CMake 学习笔记 (A)hello-cmake

从零开始 CMake 学习笔记 (A)hello-cmake

最近基于Caffe2 C++项目开发算子时,接触到了C++,查找的资料基本又杂又多,官方文档又缺少自己动手的小实验,因此有必要跟着 github 上的案例学习学习,顺带记录下自己的学习笔记留待后用。

定义
CMake 可以编译源代码、制作程序库、产生适配器(wrapper)、还可以用任意的顺序建构执行档。CMake 支持 in-place 建构(二进档和源代码在同一个目录树中)和 out-of-place 建构(二进档在别的目录里),因此可以很容易从同一个源代码目录树中建构出多个二进档。CMake 也支持静态与动态程式库的建构。
“CMake”这个名字是“cross platform make”的缩写。虽然名字中含有“make”,但是CMake和Unix上常见的“make”系统是分开的,而且更为高阶。

开始前先默念三遍口诀:

  1. Declare a target
  2. Declare target’s traits
  3. It’s all about targets

本系列主要根据GitHub上的 cmake-examples 项目进行翻译总结,同时对于不清晰的概念及函数进行查阅理解记录形成。

文章目录

  • 从零开始 CMake 学习笔记 (A)hello-cmake
  • 1 介绍
    • 1.1 文件树
    • 1.2 文件简介
  • 2 概念解析
    • 2.1 CMakeList.txt
      • 2.1.1 最小 CMake Version
      • 2.1.2 工程名称
      • 2.1.3 创建可执行文件
    • 2.2 拓展
    • 2.3 二进制目录
      • 2.3.1 内部构建
      • 2.3.2 外部构建
  • 3 运行结果

1 介绍

本案例展示了一个非常基本的hello world示例,整体的文件结构如下.

1.1 文件树

A hello-cmake$ tree
├── CMakeLists.txt
├── main.cpp

1.2 文件简介

  • CMakeLists.txt - 包含了你希望运行的 CMake 命令;
# 设置CMake运行时的最低版本
# $ cmake --version
cmake_minimum_required(VERSION 3.5)

# 设置工程名
project (hello_cmake)

# 添加可执行文件
add_executable(hello_cmake main.cpp)
  • main.cpp - "Hello World"的cpp文件。
#include 

int main(int argc, char *argv[])
{
   
   std::cout << "Hello CMake!" << std::endl;
   return 0;
}

2 概念解析

2.1 CMakeList.txt

CMakeLists.txt 时存储所有 CMake 命令的文件。当运行 cmake 命令时,他会查找路径下的 CMakeLists.txt 文件,并按照其中的命令执行。若不存在此文件,那么 cmake 命令将会退出并报错

2.1.1 最小 CMake Version

当使用 CMake 创建项目的时候,可以用下面的命令来指定支持

你可能感兴趣的:(混合计算,c++,cmake)