当前位置: 首页 > news >正文

GCC、CMake 和 vcpkg 的关系与应用

一、GCC

GCC 是 GNU 编译器集合(GNU Compiler Collection)的缩写,是一个开源的编译器套件,支持多种编程语言(如 C、C++、Fortran、Java 等)。GCC 的主要功能是将源代码编译成可执行文件、目标文件或库文件。

功能

编译源代码:将 C/C++ 源文件(如 .c 或 .cpp)编译成目标文件(如 .o 或 .obj)。

链接目标文件:将目标文件链接成可执行文件或库文件(如 .exe 或 .so)。

跨平台支持:GCC 支持多种操作系统(如 Linux、Windows、macOS)和硬件平台。

示例

以下是使用 GCC 编译一个简单的 C 程序的命令:

gcc hello.c -o hello

这条命令将 hello.c 编译成可执行文件 hello。

特点

开源:GCC 是自由软件,广泛应用于开源项目。

跨平台:支持多种操作系统和架构。

直接编译:开发者需要手动管理编译选项和依赖。

二. CMake

CMake 是一个跨平台的构建系统生成器,用于自动化项目的构建过程。它通过读取项目的配置文件(CMakeLists.txt)生成适合不同平台的构建文件(如 Makefile、Ninja 文件或 Visual Studio 项目文件)。

功能

自动化构建:简化项目的编译、链接和测试过程。

跨平台支持:支持 Windows、Linux、macOS 等多种操作系统。

依赖管理:支持集成第三方库,简化项目依赖的管理。

示例

以下是一个简单的 CMakeLists.txt 文件:

cmake_minimum_required(VERSION 3.10)
project(HelloWorld)
# 添加可执行文件
add_executable(hello hello.c)

运行以下命令生成构建文件并编译项目:

cmake -B build
cmake --build build

特点

不直接编译代码:CMake 生成构建文件,然后调用编译器(如 GCC)来编译代码。

灵活性:支持多种构建工具(如 Make、Ninja)和编译器(如 GCC、Clang、MSVC)。

适合大型项目:简化复杂项目的构建过程。

三、vcpkg

vcpkg 是一个微软开发的 C/C++ 包管理工具,用于管理和安装第三方库。它简化了第三方库的下载、编译和集成过程,支持 Windows、Linux 和 macOS。

功能

安装第三方库:自动下载并编译第三方库(如 Boost、OpenCV、SQLite 等)。

管理依赖:自动处理库的依赖关系。

与 CMake 集成:简化库的集成和使用。

示例

以下是使用 vcpkg 安装一个库(如 Boost)的命令:

vcpkg install boost

将库集成到 CMake 项目中:

find_package(Boost REQUIRED)
target_link_libraries(hello PRIVATE Boost::boost)

特点

开源:vcpkg 是自由软件,由微软维护。

跨平台:支持 Windows、Linux 和 macOS。

简化依赖管理:自动处理库的下载、编译和集成。

四、三者关系

GCC 负责将源代码编译成可执行文件或库文件,它是 CMake 和 vcpkg 的基础工具;vcpkg 负责下载安装和管理第三方库,依赖于GCC来编译库文件;CMake 生成适合不同平台的构建文件(如 Makefile),过程中依赖于vcpkg安装的库文件,以及调用 GCC 来编译源代码。三者配合最终生成可执行文件。

三者的协同工作示例

如:使用 GCC、CMake 和 vcpkg 构建一个依赖 Boost 库的项目

  • 安装 vcpkg
git clone https://github.com/microsoft/vcpkg
cd vcpkg
./bootstrap-vcpkg.sh
./vcpkg integrate install
  • 安装 Boost 库
vcpkg install boost
  • 编写 CMakeLists.txt
cmake_minimum_required(VERSION 3.10)
project(MyProject)
# 查找 Boost 库
find_package(Boost REQUIRED)
# 添加可执行文件
add_executable(myapp main.cpp)
# 链接 Boost 库
target_link_libraries(myapp PRIVATE Boost::boost)
  • 生成构建文件并编译:cmake -B build -DCMAKE\_TOOLCHAIN\_FILE=vcpkg 路径/scripts/buildsystems/vcpkg.cmake

cmake --build build

  • 运行程序:
./build/myapp

五、总结

工具 功能 用途 特点
GCC 编译器 编译 C/C++ 代码 开源、跨平台、直接编译
CMake 构建系统生成器 自动化构建过程,跨平台 生成构建文件,适合大型项目
vcpkg 包管理工具 管理第三方库 简化库的安装和集成

通过合理组合这些工具,开发者可以高效地开发和维护 C/C++ 项目。

http://www.sczhlp.com/news/6492/

相关文章:

  • rust学习第一课:window环境报错(error: linker `link.exe` not found)
  • Python + Requests 接口自动化框架的实现
  • 数据库锁表现场排查与处理手册
  • CGCS2000 GK3degree坐标投影问题
  • 最短路径求解
  • 制造业痛点:图纸外发安全如何管控?2025最新技术方案解析
  • Qt | 四种方式实现多线程导出数据功能
  • 无法访问 Maven 3.8.1 http 仓库
  • 研发场景题
  • 漏洞挖掘-01
  • 微信扫描二维码登录的跳转重定向被浏览器阻止
  • 免费的个人网站托管-InfinityFree
  • 论保护电脑隐私的重要性
  • 详细介绍:C++高频知识点(十四)
  • Awaken Your Web 创新挑战赛
  • 基于若依框架二次开发
  • Windows报错:请求列出指定服务器上的可用功能失败问题处理
  • 模型和模型量化,模型量化后损失了什么
  • 服务器侧简单测试大模型问答实现
  • 【补题计划】 [BJOI2014] 大融合
  • [KAFKA] KAFKA消费者自动提交机制
  • 剑指offer-19、顺时针打印矩阵
  • CyberTalents蓝队奖学金CTF题解:从数字取证到网络安全的实战技巧
  • 大语言模型幻觉检测新工具与数据集
  • vue3之子组件调用父组件异步请求,完了之后再同步执行下文
  • glTF-教程/glb-教程
  • 我最喜欢的 C# 14 新特性
  • X11 使用 XSetWMNormalHints 固定窗口所在的屏幕
  • Claude Code:AI编程的深度体验与实践
  • Chrome浏览器无法查看页面跳转前的请求日志及解决办法