CMake学习:使用camke创建一个最简单的跨平台c++项目

CMake 完全实战指南:从入门到精通 《CMake 完全实战指南》摘要:CMake 是现代 C/C++ 项目的跨平台构建系统生成器,支持生成 Makefile、VS 项目等多种构建文件。文章从核心概念入手,介绍了基本的 CMakeLists.txt 配置、可执行文件和库的创建与管理方法,以及头文件包含和库链接的语法。实战部分详细讲解了 Makefile 生成、构建与安装命令,推荐了模块化项目结构最佳实践。高级技巧包括条件编译选项、第三方库集成(find_package 和 FetchContent)以及自定义构建命令。指南适合初学者快速上手. 阅读详情


须知:我是在Windows环境下实验的。

什么是CMake

CMake是一个跨平台的编译、安装、测试以及打包工具;CMake不直接编译软件,而是结合原生构建系统来构建软件。CMake配置文件是CMakeList.txt文件(每个源码文件夹下都要有一个),CMake根据配置文件在生成Unix的Makefile或VS的solution文件等。

为什么选择cmake

跨平台需求

CMakeLists.txt

cmake的配置文件

使用cmake创建一个简单的工程项目

为了自动构建工程,需要在源文件所在的最上层目录写一个CMakeLists.txt文件,它是cmake的源文件,也可以看作是cmake的脚本文件,这个文件描述了cmake怎样帮我们自动构建工程。举一个最简单的例子只有一个cpp文件和cmakelists.txt。
  1.1编写代码
  CMakeLists.txt

# cmake的最低版本要求
cmake_minimum_required(VERSION 3.13)
​
# 工程名称,cmakedemo
project(cmakedemo)
​
if(NOT CMAKE_BUILD_TYPE)
    set(CMAKE_BUILD_TYPE "Release" CACHE STRING "Choose Release or Debug" FORCE)
endif()
message(STATUS "===============CMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}")
​

# 设置C++版本 17
if(NOT CMAKE_CXX_STANDARD)
    set(CMAKE_CXX_STANDARD 17)
    set(CMAKE_CXX_STANDARD_REQUIRED ON)
endif()
​
#生成文件
add_executable(hello hello.cpp)hello.cpp

hello.cpp

​#include <stdio.h>
int main (int argc, char *argv[])
{
    printf("hello world!");
    return 0;
}

1.2 设置路径
在这里插入图片描述

1.3 设置目标工程为vs工程
在这里插入图片描述

1.4 产生vs工程
在这里插入图片描述

1.5 打开vs工程,编译运行程序
在这里插入图片描述

【CMake】学习路径和关键知识点 作为 C++ 开发者,学习 CMake 的核心目标是,尤其是跨平台和依赖管理。 阅读详情

相关推荐

在构建drogon项目,camke配置正确,已下载yaml-cpp,但是程序无法找到yaml-cpp库,如何解决?

🏆本文收录于 《全栈Bug调优(实战版)》 专栏,该专栏专注于分享我在真实项目开发中遇到的各类疑难Bug及其深层成因,并系统提供高效、可复现的解决思路和实操方案。无论你是刚入行的新手开发者,还是拥有多年项目经验的资深工程师,本专栏都将为你提供一条系统化、高质量的问题排查与优化路径,助力你加速成长,攻克技术壁垒,迈向技术价值最大化与职业发展的更高峰🚀!

**My Coding Family** 768

cmake使用教程(实操版)

cmake使用教程 目录 一、初识cmake PS:绝大部分使用变量的情况要通过${}引用,而在IF语句中却必须直接使用变量名。 官网:www.cmake.org 优点: 1、开源代码,使用类BSD许可发布。 2、跨平台,并可以生成native编译配置文件,在linux/Unix平台,生成makefile,在苹果平台可以生成Xcode,在windows平台,可以生成MSVC的工程文件。 3、能够管理大型项目。 4、简化编译构建过程和编译过程。cmake的工具链:cmake+make。 5、高效率,因为cma

qq_34796146的博客 14万+

CMake 入门指南:从零开始配置你的第一个项目

本文从 “CMake 是什么” 的基础出发,逐步深入讲解了 CMakeLists.txt 的结构与常用命令,展示了从构建可执行文件到静态库、动态库的完整流程。同时也涵盖了项目实战示例、嵌套使用、以及与 STM32 工程结合的案例,帮助你建立起对 CMake 的全面认知。

wallwayj的博客 1万+

【C++】Cmake使用教程(看这一篇就够了)

以上是自己学习CMake的一点学习记录,通过简单的例子让大家入门CMake,学习的同时也阅读了很多网友的博客。CMake的知识点还有很多,具体详情可以在网上搜索。总之,CMake可以让我们不用去编写复杂的Makefile,并且跨平台,是个非常强大并值得一学的工具。

Friday 15万+

【计算机图形学】Pov-Ray画的垃圾小车

效果: 代码: #include "colors.inc" #include "metals.inc" #include "glass.inc" //相机 //这个位置车子刚好落在草地上了 camera { location direction z*1.5 right x*image_width/image_height look_at

lishichengyan的博客 1749

我的AI个人公司成立:基于Skills与Qwen大模型的智能问答平台实战开发+龙虾团队

微学AI推出数字员工矩阵,包含10个核心AI角色(总经理、秘书、工程师等),每个角色具备专属技能模块。系统采用FastAPI+Vue3技术栈,核心功能包括:基于SkillLoader的动态技能管理(支持脚本执行和文档加载)、WebSocket流式输出、多轮对话上下文管理。通过模块化架构实现AI自驱协作,可自主完成从需求分析到开发落地的全流程。项目亮点在于声明式技能配置和实时交互能力,打破传统办公壁垒,提升工作效率。

微学AI的博客 1627

cmake的使用

对cmake的命令以及使用方式做总结,并举例简单的测试程序说明。

weixin_45374174的博客 2557

解码器选型参数,结构原理,工艺与注意问题总结

解码器芯片(Decoder Chip)是电子设备中的一个重要组件,通常用于处理、解释和输出存储在某种编码格式中的数据或信号。本文对解码器的工作原理,结构特点,工艺流程,选型参数及设计注意事项进行总结。

fydar的博客 1172

cmake超详细入门教程,学不会你捶我~

我们在平时编译代码的时,面对简单的代码,直接GCC编译就好,稍微多一点,可以编写Makefile来编译,以上编译起来都很轻松,可是平时工作的时候基本都是大工程呀,代码文件少则几十个文件了,这种情况下就头疼了,咋办呢?今天我来教你使用cmake轻松解决问题~提示:以下是本篇文章正文内容,下面案例可供参考关于cmake的使用方法还有很多,这里只是做了一个最基本的介绍,后期有机会在进行详细补充~

十年饮冰,难凉热血,保持热爱,奔赴星海! 6万+

用 YOLOv11‑Seg 做工地实例分割:从 0 起步到效果调优,真香!

这不是一篇“官方文档翻译”,而是一篇。

weixin_43199439的博客 776

萤石云cs刷机解绑固件

萤石CS-C2C-32WFR刷机包,萤石CS-C6TC刷机包,萤石CS-C6H刷机包,萤石猫眼产品等等。萤石云摄像头固件修改,绑定手机号解绑,更换序列号教程。

海康威视技术支持 2万+

一文掌握 CMake 指令的详细使用

CMake 是一个用于配置跨平台源代码项目应该如何配置的工具建立在给定的平台上。本清单提供了对 CMake 的入门简要概述,以及 CMake 常用示例。时,系统会要求您提供二进制目录,运行。使用这些工具构建该项目。不会创建最终的可执行文件,而是会为。

数据知道的博客 1万+

手把手教你学PCIE--所有 PF(Physical Function)共同管理和分配 VF

但具体如何分配和使用 VF 取决于硬件设计、驱动程序配置以及实际应用场景。

MHD0815的博客 1464

Qt扫盲-CMake 使用概述

CMake是一个简化跨不同平台开发项目的构建过程的工具。对C++来说其实就是生成一个文件,文件里面描述了,怎么组织这个工程,用编译器怎么编译这个项目之类的,这个CMake 本身不是一个编译器,其实就是生成一个让编译器能读懂编译流程的文件工具。让CMake自动生成构建系统,例如Makefiles和Visual Studio项目文件。CMake是一个第三方工具,有自己的文档。这里就是介绍一下在Qt 5中使用CMake 3.5 系列,反正是 CMake 3系列。

洪源兄 7430

k8s问题处理

执行 kubectl api-resources 报错如下。

weixin_40548182的博客 944

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Linux 使用cmake构建OpenCV项目

文章目录前期准备一、准备二、构建CMakeLists.txt1.指令2.解析:(1)FIND_PACKAGE()(2)INCLUDE_DIRECTORIES()(3)TARGET_LINK_LIBRARIES()三、执行 前期准备 ubuntu18.04安装vscode和opencv3.4.6教程: 只用完成“一”部分就ok Linux之cmake入门: 我们采用外部构建的方式,如果你不知道外部...

sandalphon4869的博客 5090

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

CMake学习

CMake相关命令的学习

yong_19930826的博客 850

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

cmake使用详解

文章目录cmake使用笔记基本使用方法相较于makefile的优点常用语法cmake_minimum_requiredprojectPROJECT_SOURCE_DIRsetinclude_directorieslink_directories常用变量CMAKE_CURRENT_LIST_DIRCMAKE_ARCHIVE_OUTPUT_DIRECTORYCMAKE_LIBRARY_OUTPUT_D...

靑い空゛ 5460

详解Ubuntu配置VSCode+CMake的C++开发环境

接下来需要在项目文件夹中创建一个CMakeLists.txt文件来配置CMake。安装完VSCode之后,需要安装C/C++插件,该插件提供了C++开发所需的工具和功能。在VSCode内安装CMake插件,该插件提供CMake语法高亮、调试和构建支持。这告诉CMake创建一个名为“hello_world”的可执行文件,并将“main.cpp”文件添加到该可执行文件中。以下是一个简单的示例,演示了如何在Ubuntu 18.04下使用VSCode+CMake开发和调试C++程序。

shuxuejianmoliu的博客 5656

Qt优雅的组织项目结构二(基于Qt5使用.cmake进行模块化配置)——————附带详细示例代码

本文介绍了在Qt5.15.2项目中使用CMake进行模块化管理的实践方法。针对Qt6全面转向CMake的趋势,作者选择兼容Qt5的最新版本开发,并详细对比了Qt5与Qt6在构建系统、图形架构、C++标准等方面的核心差异。文章重点展示了如何通过CMake脚本简化项目管理,包括自动处理Qt特性(信号槽、UI文件、资源文件)、强制指定C++17标准以及跨平台配置。通过实际项目结构对比,演示了从传统qmake项目向CMake模块化管理的迁移过程,为兼容旧系统的Qt5项目提供了现代化构建方案。

韩江雪de 小屋 2849

cmake使用示例与整理总结

原文地址:https://blog.youkuaiyun.com/wzzfeitian/article/details/40963457 本文代码托管于github &nbsp;cmake_demo cmake中一些预定义变量 PROJECT_SOURCE_DIR 工程的根目录PROJECT_BINARY_DIR 运行cmake命令的目录,通常是${PROJECT_SOURCE_DIR}/buildCM...

QTVLC的博客 8136

CMake教程-第 3 步:添加库的使用要求

CMake 教程提供了一个循序渐进的指南,涵盖了 CMake 可帮助解决的常见构建系统问题。在一个示例项目中了解各个主题是如何协同工作的,会非常有帮助。

天使之翼 1110

Cmake 内置变量

2019 May 31 cmake Cmake 内置变量 信息变量 CMAKE_SYSTEM 系统名称,例如 Linux-2.6.22、FreeBSD-5.4-RELEASE、Windows 5.1 CAMKE_SYSTEM_NAME 系统名称,如 Linux、FreeBSD、Windows CMAKE_SYSTEM_VERSION 系统版本,如 2.6.22 CMAKE_SYS...

测试 5056

CMake是什么

使用CMake构建和运行项目主要涉及准备阶段(创建源文件和CMakeLists.txt)、构建阶段(运行CMake生成构建文件,然后使用构建工具编译和链接项目)和运行阶段(运行生成的可执行文件)。这个过程可以跨平台地工作,使得开发者能够在不同的操作系统和编译器上使用相同的构建系统配置。

z 1715

CMake构建学习笔记15-组建第一个程序项目

详细介绍了使用CMake组件一个C/C++项目的过程

Charlee44的技术驿站 1354
上一篇: Windows环境下读取文件,输出中文乱码原因剖析及解决方案!
下一篇: Windows系统中文乱码,最简单解决方案,调用函数即可!
CodeBowl
博客等级 码龄5年 7664粉丝 67原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值