提示:博主取舍了很多大佬的博文并亲测有效,分享笔记邀大家共同学习讨论
CMake(Cross-Platform Make)是一个开源的跨平台构建工具,用于管理软件项目的构建过程,它使用简单的配置文件(CMakeLists.txt)来描述项目的构建规则,然后根据这些规则生成适用于不同平台和编译器的构建脚本或项目文件。
CMake的主要作用是提供一个平台无关的构建系统,使开发人员能够轻松地在不同的操作系统和编译器上构建他们的软件项目,因此它为开发人员提供了一种简化和自动化构建过程的方式,同时支持各种主流编程语言,如C、C++、Python等。
CMake的主要功能和优势:
在官网地址下载cmke,点击 “Download” 进入下载页面,选择Windows操作系统的cmaker安装,介意选择"cmake-x.xx.x-rc3-windows-x86_64.msi"文件;打开安装包,按照提示安装cmaker到你的电脑中,打开命令行工具,输入 “cmake --version” 命令,如果能看到 cmaker 的版本信息,则表示安装成功。
创建helloworld.c文件,编写最基础的helloworld代码。
#include
int main(int argc, char **argv)
{
printf("hello\n");
return 0;
}
创建"CMakeLists.txt"文件,注意,这里的名字不能有任何错误,否则后续配置生成会失败。
# 指定cmake的最小版本
cmake_minimum_required(VERSION 3.5)
# 指定工程名字
project(hello_world)
# 生成可执行文件xxx.exe
add_executable(hello_world helloworld.c)
cmake配置生成工程,在CMakeLists.txt和helloworld.c的同一目录下新建build文件夹,通常将配置生成的工程是放到CMakeLists.tx和helloworld.ct同一目录下的build文件夹中,防止生成的工程文件与原来的文件混淆在一次。cmd进入build路径下执行命令编译代码。cmake默认使用Visual Studio2019版本。
# 生成vs工程(windoes下) ..表示在上级目录寻找cnake文件
cmake ..
# 开始编译代码,生成可执行程序exe
cmake --build .
# 在build\Debug生成exe,可以用cmd执行该文件
用vs2019打开工程,c源码文件和cmake文件都被拷贝到在test目录下,可以在release|64或debug|64下执行test.c,可能需要将text设置为启动项。
cmake -G
# 生成Visual Studio 10 2017版本的工程,编译生成的文件可以在任何地方
# 默认生成与当前操作系统位数相匹配的项目文件,生成64位
cmake -G "Visual Studio 15 2017" ..\demo
# 生成32位,旧版本
cmake -G "Visual Studio 15 2017 Win32" ..\demo
# 新版本
cmake -G "Visual Studio 15 2017 " -A Win32 ..\demo
# 生成MinGW的项目
cmake -G "MinGW Makefiles" ..\demo
# CMAKE_BUILD_TYPE:用于指定编译类型
# 生成vs工程
cmake -D CMAKE_CONFIGURATION_TYPES="Release;Debug" ..\demo
# 编译(Release或Debug)
cmake --build . --config Release
cmake --build . --config Debug
----------------------------------------------------------------------
// test.c
#include
#include "math.h"
int main()
{
printf(" 5-4=%d\n", sub(5, 4));
return 0;
}
----------------------------------------------------------------------
// math.h
#ifndef MATH_H_
//用于避免头文件的重复包含
#define MATH_H_
int sub(int m, int n);
#endif // MATH_H_
----------------------------------------------------------------------
// math.c
#include "math.h"
int sub(int m, int n)
{
return m - n;
}
----------------------------------------------------------------------
# 在CMakeLists.txt加入指令
# math.c生成静态库
add_library(math STATIC math.c)
# 使用静态库
target_link_libraries(hello_world math)
cmake ..
cmake --build .
# 在CMakeLists.txt加入指令
# math.c生成动态库,注意在dll同目录下必须要有lib
add_library(math SHARED math.c)
# 链接动态库
target_link_libraries(hello_world math)
cmake ..
cmake --build .
用简单的实例讲解了cmake最入门的使用,后续会根据博主的学习和使用情况,逐步充实cmake的学习教程,并与大家分享讨论,共同进步。