Open bingoogolapple opened 3 years ago
# CMake最小版本要求为2.8.3
cmake_minimum_required(VERSION 2.8.3)
# 指定工程名为 CNote
project(CNote)
# 指定工程名为 CNote,并制定工程语言为 C
project(CNote C)
# 定义 SRC 变量,其值为 sayhello.cpp hello.cpp
set(SRC sayhello.cpp hello.cpp)
# 将/usr/include/myincludefolder 和 ./include 添加到头文件搜索路径
include_directories(/usr/include/myincludefolder ./include)
# 通过变量 SRC 生成 libhello.so 共享库
add_library(hello SHARED ${SRC})
# 添加编译参数 -Wall -std=c++11 -O2
add_compile_options(-Wall -std=c++11 -O2)
# 编译 main.cpp 生成可执行文件 main
add_executable(main main.cpp)
# 将 hello 动态库文件链接到可执行文件 main
target_link_libraries(main hello)
# 添加 src 子目录,src 中需有一个 CMakeLists.txt
add_subdirectory(src)
# 定义 SRC 变量,其值为当前目录下所有的源代码文件
aux_source_directory(. SRC)
# 编译 SRC 变量所代表的源代码文件,生成 main 可执行文件
add_executable(main ${SRC})
# 在 CMAKE_CXX_FLAGS 编译选项后追加 -std=c++11
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
# 设定编译类型为 debug,调试时需要选择 debug
set(CMAKE_BUILD_TYPE Debug)
# 设定编译类型为 release,发布时需要选择 release
set(CMAKE_BUILD_TYPE Release)
CMake 目录结构:项目主目录存在一个 CMakeLists.txt 文件
在 linux 平台下使用 CMake 构建 C/C++ 工程的流程如下
. # 表示当前目录
./ # 表示当前目录
.. # 表示上级目录
../ # 表示上级目录
内部构建会在同级目录下产生一大堆中间文件,这些中间文件并不是我们最终所需要的,和工程源文件放在一起会显得杂乱无章
# 在当前目录下,编译本目录的 CMakeLists.txt,生成 Makefile 和其他文件
# 如果电脑上已经安装了 VS,可能会调用微软 MSVC 编译器导致不会生成 Makefile,使用【cmake -G "MinGW Makefiles" .】代替【cmake .】即可,仅第一次需要代替,后续都可以直接使用【cmake .】
cmake .
# 执行 make 命令,生成 target
make
将编译输出文件与源文件放到不同目录中
# 1. 在当前目录下,创建 build 文件夹
mkdir build
# 2. 进入到 build 文件夹
cd build
# 3. 编译上级目录的 CMakeLists.txt,生成 Makefile 和其他文件
# 如果 Windows 电脑上已经安装了 VS,可能会调用微软 MSVC 编译器导致不会生成 Makefile,使用【cmake -G "MinGW Makefiles" ..】代替【cmake ..】即可,仅第一次需要代替,后续都可以直接使用【cmake ..】
cmake ..
# 4. 生成 target:Windows 电脑使用 mingw32-make,Linux 和 Mac 使用 make
make
前言
安装 CMake
Cross-platform development
语法特性介绍