C++后端开发(1.4.1)——Makefile/cmake/configure使用教程
- 1 Cmake
-
- 1.1 语法特性
- 1.2 cmake重要指令
- 1.3 常用变量
-
- 1.3.1 gcc编译选项
- 1.3.2 g++编译选项
- 1.3.3 编译类型(Debug, Release)
- 1.3.4 CMAKE_BINARY_DIR 、PROJECT_BINARY_DIR、__BINARY_DIR
- 1.3.5 CMAKE_SOURCE_DIR、PROJECT_SOURCE_DIR、__SOURCE_DIR
- 1.3.6 CMAKE_C_COMPILER:指定C编译器
- 1.3.6 CMAKE_CXX_COMPILER:指定C++编译器
- 1.3.7 EXECUTABLE_OUTPUT_PATH:可执行文件输出的存放路径
- 1.3.8 LIBRARY_OUTPUT_PATH:库文件输出的存放路径
- 1.4 CMake编译工程
小节提纲
Makefile的规则与make的工作原理
单文件编译与多文件编译
Makefile的參数传递
多目录文件央递归编译与嵌套执行make
Makefile的通配符,伪目标,文件搜索
Makefile的操作函数与t特殊语法
configure生成makefile的原则
cmake的写法
1 Cmake
1.1 语法特性
- 基本语法格式:指令(参数 1 参数 2…)
- 参数使用括弧括起
- 参数之间使用空格或分号分开
- 指令是大小写无关的,参数和变量是大小写相关的
set(HELLO hello.cpp)
add_executable(hello main.cpp hello.cpp)
ADD_EXECUTABLE(hello main.cpp ${
HELLO})
- 变量使用${}方式取值,但是在 IF 控制语句中是直接使用变量名
1.2 cmake重要指令
1.2.1 指定CMake的最小版本要求
- 语法:cmake_minimum_required(VERSION versionNumber [FATAL_ERROR])
# CMake最小版本要求为2.8.3
cmake_minimum_required(VERSION 2.8.3)
1.2.2 定义工程名称,并可指定工程支持的语言
- 语法:project(projectname [CXX] [C] [Java])
# 指定工程名为HELLOWORLD
project(HELLOWORLD)
1.2.3 显式的定义变量
- 语法:set(VAR [VALUE] [CACHE TYPE DOCSTRING [FORCE]])
# 定义SRC变量,其值为main.cpp hello.cpp
set