VSCode + CMake

参考文献:

  1. 如何用 GCC, CMake 和 Make 编译C/C++代码
  2. Windows 上的 Linux 子系统:WSL
  3. WSL:桌面 UI + 远程连接 RDP + 配置 VScode

文章目录

  • CMake 配置
  • VSCode 配置
    • launch.json
    • task.json
    • c_cpp_properties.json

CMake 配置

编写如下的 CmakeLists.txt,设置文件之间的链接关系,

cmake_minimum_required(VERSION 3.10)project(PQC VERSION 1.0 LANGUAGES CXX)set(CMAKE_CXX_COMPILER "g++")
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_BUILD_TYPE Debug) 								# Debug, Releaseinclude_directories(SYSTEM)
link_directories(SYSTEM)set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin) 		# 配置执行文件目录
set(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib/)			# 配置库文件目录add_compile_options(-march=native -O3 -maes -mavx2 -fPIC-w -Wl,--no-as-needed,-lprofiler,--as-needed
)link_libraries(stdc++ m ssl crypto profiler)				# 在所有编译指令中添加这些链接库set(PATH_KEM ${PROJECT_SOURCE_DIR}/kem)						# 源文件目录
set(PATH_TEST ${PROJECT_SOURCE_DIR}/test)					# 测试文件目录file(GLOB SRC_KEM CONFIGURE_DEPENDS ${PATH_KEM}/*.cpp)		# 找到全部的源文件add_library(kem_128 SHARED ${SRC_KEM})						# 根据全部的源文件,构造出库文件
target_compile_definitions(test_128 PUBLIC SAFETY=128)		# 配置宏,编译出不同的可执行文件add_executable(test_128 ${PATH_TEST}/test.cpp)				# 构造可执行文件
target_link_libraries(test_128 kem_128)						# 链接到编译出的库文件

VSCode 配置

首先安装微软的 CMake Tools 扩展包,左栏如图所示,

在这里插入图片描述

launch.json

该文件用于配置调试器,我们将其中的 program 设置为 command:cmake.launchTargetPath,这是使用 CMake 构建出的可执行文件路径,

{"version": "0.2.0","configurations": [{"name": "CMake Debug","type": "cppdbg","request": "launch","program": "${command:cmake.launchTargetPath}","args": [],"stopAtEntry": false,"cwd": "${workspaceFolder}","environment": [],"externalConsole": false,"MIMode": "gdb","setupCommands": [{"description": "Enable pretty-printing for gdb","text": "-enable-pretty-printing","ignoreFailures": true}]}]
}

现在,可以在左栏中配置、生成、调试文件,使用 ctrl + F5 不调试执行,使用 F5 调试执行(打断点、查看寄存器的值,等等)

task.json

该文件用于配置编译器,可在 command 属性配置编译器路径(usr/bin/g++),在 args 属性中设置依赖库文件(-I, -L, -l)的路径,等等。这里,我们使用 CMake 扩展,上述的 launch.json 将会覆盖该文件,它通过命令面板(Ctrl + Shift + P)中的 CMake: ConfigureCMake: Build 完成项目的配置和构建。因此该文件不需要编写。

c_cpp_properties.json

该文件用于配置 C/C++ 开发环境,包括:头文件目录 includePath, 编译器目录 compilerPath, 宏定义 defines,等等。这里,我们使用 CMake 扩展,上述的 launch.json 将会覆盖该文件,它根据 CmakeLists.txt 中的设置来配置环境。因此该文件不需要编写。

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

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

相关文章

yolov5学习及手势识别实战

目录 一、YOLOv5核心原理 1. 单阶段检测范式 2. 关键技术特性 二、YOLOv5网络架构组成 1. Backbone:CSPDarknet53 2. Neck:PANet(Path Aggregation Network) 3. Head:检测头 三、YOLOv5网络架构细节 1. 整体架…

【视频】H.264的码率和图像质量

1、简述 分辨率、帧率、I帧设置不变的情况下,码率过低时,IP摄像机如果没有足够的带宽来传输高质量的图像,便会抹掉一些细节,导致出现马赛克,尤其是动态性强的画面(比如:运动的云台、非固定的摄像头)。 2、计算码率 1)码率的基础理论公式为: 码率 (bps) = 分辨率像…

VMware-workstation-17.6.3安装教程

1.下载VMware-workstation-17.6.3软件包 2.安装并输入许可码 3.开始使用

[Linux][经验总结]Ubuntu6.11.0 docker更换镜像源(实操可用的正确方法)

一、前言 关于Ubuntu更换docker镜像源,网上有很多的教程,但在实操中发现,更换的源无法生效——原因是我的docker是在系统安装时,选择附加安装的package的方式安装的。 现将处理过程记录如下。 二、获取镜像源 在网上随便找个几…

Element Plus开发实战指南:快速上手Vue 3企业级组件库

Element Plus全栈开发指南:从入门到企业级实战 一、环境搭建与工程配置1.1 项目初始化(Windows/Mac通用)1.2 配置文件关键代码 二、主题定制与样式管理2.1 SCSS变量覆盖方案2.2 暗黑模式切换 三、核心组件深度实践3.1 智能表格开发&#xff0…

Elasticsearch基础教程:从入门到上手

🎯 一、Elasticsearch简介 Elasticsearch(简称ES)是一个分布式、RESTful风格的搜索引擎,支持全文检索、结构化查询、分析和近实时搜索。常用于日志分析、商品搜索、数据分析等场景。 1. 什么是 Elasticsearch? Elas…

VIVO手机如何实现证件照换底色?证件照换底色技巧分享

在日常生活中,我们常常需要使用不同底色的证件照,无论是办理证件、提交资料还是其他用途,一张符合要求的证件照都显得尤为重要。 而VIVO手机凭借其强大的拍照功能和便捷的图片编辑工具,为我们提供了一种简单高效的证件照换底色解…

A SURVEY ON POST-TRAINING OF LARGE LANGUAGE MODELS——大型语言模型的训练后优化综述——第一部分

arXiv 2025 摘要 大型语言模型(LLMs)的出现从根本上改变了自然语言处理,使其在从对话系统到科学研究的各个领域中变得不可或缺。然而,它们的预训练架构在特定情境下经常显示出局限性,包括有限的推理能力、伦理不确定…

深入理解Python闭包与递归:原理、应用与实践

目录 闭包 什么是闭包: 闭包的基本结构: 实现闭包的条件: 1.嵌套函数 2.内函数引用外部函数的变量 3.外部函数返回内部函数 4.外部函数已经执行完毕 递归函数 什么是递归函数: 递归函数条件 1.必须有个明确的结束条…

【自学笔记】智能合约基础知识点总览-持续更新

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 智能合约基础知识点总览目录1. 智能合约简介2. 以太坊与Solidity示例代码:Hello World智能合约 3. Solidity基础语法示例代码:简单的计数器合…

ABAP PDF预览

画个屏幕 PDF JPG TXT都可以参考预览,把二进制流传递给标准函数就行 *&---------------------------------------------------------------------* *& Report YDEMO2 *&---------------------------------------------------------------------* *&am…

【视频】文本挖掘专题:Python、R用LSTM情感语义分析实例合集|上市银行年报、微博评论、红楼梦、汽车口碑数据采集词云可视化

原文链接:https://tecdat.cn/?p41149 分析师:Zhenzhen Liu,Shuai Fung 作为数据科学家,我们始终关注如何从非结构化数据中提取高价值信息。本专题合集聚焦企业年报的文本分析技术,通过Python与R语言实战案例&#xff…

高效团队开发的工具与方法 引言

引言 在现代软件开发领域,团队协作的效率和质量直接决定了项目的成败。随着项目规模的扩大和技术复杂度的增加,如何实现高效团队开发成为每个开发团队必须面对的挑战。高效团队开发不仅仅是个人技术能力的简单叠加,更需要借助合适的工具和方…

python中mysql操作整理

安装 Windows : pip install pymysql -i https://pypi.douban.com/simple mac :python3 -m pip install pymysql -i https://pypi.douban.com/simple mysql示例 import pymysql connect pymysql.Connect(host82.156.74.26,port3306,userroot,passwor…

Python----计算机视觉处理(Opencv:图像颜色替换)

一、开运算 开运算就是对图像先进行腐蚀操作, 然后进行膨胀操作。开运算可以去除二值化图中的小的噪点,并分离相连的物体。 其主要目的就是消除那些小白点 在开运算组件中,有一个叫做kernel的参数,指的是核的大小,通常…

基于SpringBoot的“ERP-物资管理”的设计与实现(源码+数据库+文档+PPT)

基于SpringBoot的“ERP-物资管理”的设计与实现(源码数据库文档PPT) 开发语言:Java 数据库:MySQL 技术:SpringBoot 工具:IDEA/Ecilpse、Navicat、Maven 系统展示 系统总体结构图 E-R实体关系图 管理员登录界面 管…

链表操作:分区与回文判断

目录 链表分区(Partition) 功能概述 代码实现 要点与难点 注意事项 链表回文判断(PalindromeList) 功能概述 代码实现 要点与难点 注意事项 总结 在链表相关的算法问题中,理解链表的基本结构和操作至关重要…

如何在 Node.js 中使用 .env 文件管理环境变量 ?

Node.js 应用程序通常依赖于环境变量来管理敏感信息或配置设置。.env 文件已经成为一种流行的本地管理这些变量的方法,而无需在代码存储库中公开它们。本文将探讨 .env 文件为什么重要,以及如何在 Node.js 应用程序中有效的使用它。 为什么使用 .env 文…

【Git学习笔记】Git结构原理及其分支管理模型分析

【Git学习笔记】Git结构原理及其分支管理模型分析 🔥个人主页:大白的编程日记 🔥专栏:Git学习笔记 文章目录 【Git学习笔记】Git结构原理及其分支管理模型分析前言一.认识工作区、暂存区、版本库1.1 版本回退1.2 撤销修改1.3 删…

Scheme语言的压力测试

Scheme语言的压力测试 引言 Scheme是一种广泛使用的函数式编程语言,它是Lisp语言家族的一员,以其简洁性和强大的表达能力而闻名。在现代软件开发中,施行压力测试是一项关键技术,旨在评估系统在高负载或极端情况下的表现。在这篇…