VSCode 配置 CMake

VSCode 配置 C/C++ 环境的详细过程可参考:VSCode 配置 C/C++ 环境

1 配置C/C++编译环境

  • 方案一
    如果是在Windows,需要安装 MingW,可以去官网(https://sourceforge.net/projects/mingw-w64/)下载安装包。
    注意安装路径不要出现中文。
    在这里插入图片描述

    打开 windows shell 界面,输入mingw-get install gccmingw-get install g++
    如果安装的时候提示安装包被错误下载,可使用方案二安装。

  • 方案二
    进入网址https://sourceforge.net/projects/mingw-w64/files/,下滑,下载图中所示压缩包。
    在这里插入图片描述

    找一个无中文路径解压缩。
    添加环境变量。在Path中加入解压后的文件夹中的bin目录,如C:\ProgramFiles\MinGW\mingw64\bin。
    在这里插入图片描述
    在这里插入图片描述

  • 测试
    在 windows shell 界面输入gcc -vg++ -v,正确出现版本号则配置成功。

  • 创建 make.exe
    进入 MingW 安装位置下的 bin 目录,将 mingw32-make 复制一份,并改名为 make.exe。如果不这样做,无法使用 make 命令,而需要使用 mingw32-make 命令作为替代。

2 安装 CMake

可以去官网(https://cmake.org/download/)下载安装包。
向下滑,找到安装包,直接下载安装即可。
在这里插入图片描述

3 安装 VSCode 插件

按 Ctrl+Shift+x,或点击图中图标,搜索以下插件并安装:C/C++ 、Code Runner、CMake、CMake tools。
在这里插入图片描述

4 创建 CMake 工程

新建一个文件夹并用 VSCode 打开。
按 Ctrl+Shift+p,或点击图中所示图标,打开命令面板。
在这里插入图片描述
搜索 cmake,选择 CMake 快速入门。
在这里插入图片描述
输入项目名称。
在这里插入图片描述
选择项目类型。
在这里插入图片描述
选择 Executable。在这里插入图片描述
生成以下文件。
在这里插入图片描述
然后就可以编写代码了。

5 CMakeLists.txt

编写 CMakeLists.txt 后,在同级目录下创建 build 文件夹,进入 build 文件夹,使用命令 cmake -G"MinGW Makefiles" ..,可自动生成 Makefile。
以下是 CMakeLists.txt 中一些可以使用的语句示例:

# 指定最小版本
cmake_minimum_required(VERSION 3.0.0)
# 制定项目名称
project(algorithm VERSION 0.1.0 LANGUAGES C CXX)
# 引入CTest
include(CTest)
enable_testing()
# 添加子项目
add_subdirectory(subdirectory)
# 如果有共享的头文件或库,可以在这里包含
include_directories(common_include_folder)
# 如果有共享的库文件,可以在这里链接
link_directories(common_lib_folder)
# 指定生成可执行文件
# add_executable(algorithm main.cpp)
# 链接子项目生成的库文件
# target_link_libraries(MyExecutable subproject1_lib subproject2_lib)
# 设置参数
set(CPACK_PROJECT_NAME ${PROJECT_NAME})
set(CPACK_PROJECT_VERSION ${PROJECT_VERSION})
set(CMAKE_CXX_COMPILER "D:\\ProgramFiles\\MingW\\mingw64-8.1.0\\bin\\g++.exe")  # 指定编译器路径
# 添加所有源文件
file(GLOB SOURCES "src/*.cpp")
# 添加头文件路径
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include)
# 生成可执行文件
add_executable(partition_executable ${SOURCES})

示例:
假设项目结构如下:

project_root/|- CMakeLists.txt|- subproject1/|- CMakeLists.txt|- src/|- main.cpp|- utils/|- utility.cpp|- utility.h|- include/|- subproject1/|- header1.h|- header2.h|- subproject2/|- CMakeLists.txt|- src/|- main.cpp|- math/|- math.cpp|- math.h|- include/|- subproject2/|- header3.h|- header4.h

主项目的CMakeLists.txt文件可以如下所示:

cmake_minimum_required(VERSION 3.10)
project(MyProject)# 添加子项目
add_subdirectory(subproject1)
add_subdirectory(subproject2)

子项目的CMakeLists.txt文件可以如下所示:

cmake
# 子项目名
project(subproject1)# 添加所有源文件
file(GLOB SOURCES "src/*.cpp" "src/utils/*.cpp")# 添加头文件路径
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include)# 生成可执行文件
add_executable(subproject1_executable ${SOURCES})

可以在每个子项目文件夹下执行以下命令来构建和运行单独的子项目:

mkdir build
cd build
cmake ..
make
./subproject1_executable
./subproject2_executable

6 运行

经过上一步可生成 Makefile,然后运行 make 命令,就可以生成 exe 可执行文件。
接下来运行可执行文件就可以了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/5646.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

06 - 步骤 add constants

简介 Add Constants 步骤是用于在数据流中添加常量字段的步骤。它允许用户在数据流中插入一个或多个常量字段,并为这些字段指定固定的数值、字符串或其他类型的常量值。 使用 场景 我需要在数据清后,这个JSON 字符串有一个固定的行流数据。 1、拖拽…

数字旅游引领未来智慧之旅:科技应用深度重塑旅游生态,智慧服务全面升级打造极致高品质旅游体验

随着信息技术的飞速发展,数字旅游作为旅游业与科技融合的新兴业态,正以其独特的魅力和优势,引领着旅游业迈向智慧之旅的新时代。数字旅游不仅通过科技应用重塑了旅游生态,更通过智慧服务为游客带来了高品质的旅游体验。本文将深入…

grpc笔记

教程地址 【狂神说】gRPC最新超详细版教程通俗易懂 | Go语言全栈教程_哔哩哔哩_bilibili rpc 定义:Remote Procedure Call——远程过程调用,通俗的含义是:远程定义好方法名、参数和返回值,RPC可以像调用本地方法那样调用远端方…

中兴F7607P自启动程序,关闭JAVA插件

中兴F7607P自启动程序,关闭JAVA插件 本文目的:关闭光猫内自动运行的JAVA插件,并实现开机自动调用用户的程序启动 原文地址 移动定制版F7607P不带LXC容器,取而代之的是JAVA虚拟机,内置多个插件,包括名为C…

Python和Julia河流湖泊沿海水域特征数值算法模型

🎯要点 一维水流场景计算和绘图: 🎯恒定透射率水头和流量计算:🖊两条完全穿透畜水层理想河流之间 | 🖊无承压畜水层两侧及两条完全穿透畜水层的补给 | 🖊分水岭或渗透性非常低的岩体的不渗透边…

Flask简介

Flask简介 安装概述使用PyCharm创建一个Flask程序 Flask程序的基本结构初始化路由和视图函数启动服务器请求-响应循环 安装 概述 Flask算是小型框架,小到可以称为“微框架”。Flask 非常小,因此你一旦能够熟练使用它,很可能就能读懂它所有的…

《MySQL对库的基本操作》

文章目录 一、查看数据库列表查看数据库中的所有表想知道当前处于哪个数据库里 二、创建一个数据库三、删除一个数据库知道两个集1.字符集2.校验集修改数据库的字符集和编码集 不同的校验码对数据库的影响四、数据库的备份与恢复注意事项:备份数据库中的表 总结 一、…

现代神经网络总结(AlexNet VGG GoogleNet ResNet的区别与改进)

VGG NIN GoogleNet 1.VGG,NIN,GoogleNet的块结构图对比(注意:无AlexNet) 这些块带来的区别与细节 AlexNet未使用块,主要对各个层进行了解: 卷积:捕捉特征 relu:增强非线性 池化层:减少计算量 norm:规范数据分布 全连接层:分类VGG块的改善(对比AlexNe…

开源博客项目Blog .NET Core源码学习(18:App.Hosting项目结构分析-6)

本文学习并分析App.Hosting项目中后台管理页面的_AminLayout.cshtml模版页面和登录页面。 _AminLayout.cshtml模版页面 后台管理页面中的大部分页面都使用_AminLayout.cshtml作为模板页面,如下图所示,后台页面的视图内容放置在表单中,使用la…

wps用js宏给文档增加用户名密码验证

偶然看见别人一个给office文档增加验证的vba教程,觉得很有意思,就打开wps验证了一下 wps在windows版本支持vba和js,js默认,vba需要自己下载相关插件折腾,linux版本wps个人版默认没有支持2次开发的高级功能&#xff0c…

unity想让方法带一个默认参数怎么写

在C#中,包括Unity使用的C#版本,你可以为方法参数提供默认值。这允许你在调用方法时省略某些参数,并使用这些参数的默认值。以下是如何为一个方法参数设置默认值的示例: using UnityEngine; public class MyClass : MonoBehaviou…

【C++航海王:追寻罗杰的编程之路】C++11(四)

目录 1 -> 相关文章 【C航海王:追寻罗杰的编程之路】C11(一) 【C航海王:追寻罗杰的编程之路】C11(二) 【C航海王:追寻罗杰的编程之路】C11(三) 2 -> lambda表达式 2.1 -> C98中的一个例子 2.2 -> lambda表达式 2.3 ->…

Python 与 TensorFlow2 生成式 AI(三)

原文:zh.annas-archive.org/md5/d06d282ea0d9c23c57f0ce31225acf76 译者:飞龙 协议:CC BY-NC-SA 4.0 第七章:使用 GAN 进行风格转移 神经网络在涉及分析和语言技能的各种任务中正在取得进步。创造力是人类一直占有优势的领域&…

关于ChatGPT的论文Demo

ChatGPT: 解锁人工智能的无限可能 引言 随着科技的飞速发展,人工智能(AI)逐渐成为改变世界的强大力量。而在众多AI技术中,ChatGPT以其独特的魅力和广泛的应用领域,吸引了全球的关注。本文将深入探讨ChatGPT的技术原理…

MetaGPT初体验之HelloWorld-Git教程编写

[目录] 1.环境准备 2.效果预览 3.总结 4.智能体完整输出 5.源码及教程点我去AIGIS公众号查看本文 前言 5.1假期坚持研究智能体的玩法可以说非常敬业了。今天我们来小试一把目前GitHub最火爆智能体框架MetaGPT,让它给我们写一篇Git教程,看看是不是像传说中的那么神奇…

如何使用KCF算法。

KCF(Kernelized Correlation Filters)算法是一种高效的目标跟踪算法,它结合了核技巧和相关滤波器的思想。以下是使用KCF算法进行目标跟踪的一般步骤: 初始化: 在视频的第一帧中,手动选择或自动检测要跟踪的…

VSCode编译C++连接lib文件

期货CTP在Windows上需要连接静态链接库,在VS2022一切正常,在VSCode却始终失败。 原因是Windows系统的dll用的vs编译器,导出的Dll没有用extern c ,gcc 编译各种坑。 最后通过在VSCode中配置VS2022的编译器,才终于成功。…

判断循环链表以及其环入口

文章目录 题目题目链接题目要求 解题思路方法一:哈希表方法二:双指针 进阶思考快指针一次走三步 进阶问题(入口点)题目链接题目要求问题思路 总结 题目 题目链接 环形链表 题目要求 解题思路 显而易见的是,单纯的遍…

day7 c++

整理代码 1、unique_ptr 指针 #include <iostream> #include <memory> using namespace std; class Demo {public:Demo(){cout<<"无参构造"<<endl;}~Demo(){cout<<"Demo的析构函数"<<endl;} };int main() {//unique…

python 笔记:cls VS self

cls&#xff1a; 用于类方法&#xff1a; cls 通常作为类方法&#xff08;用 classmethod 装饰&#xff09;中的第一个参数。它指代调用该方法的类本身&#xff0c;无论该类有没有被实例化访问类级别的属性和方法 通过 cls&#xff0c;可以访问类级别的属性和方法。可以通过 c…