VSCode + CMake

server/2025/3/19 5:58:42/

参考文献:

  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.ppmy.cn/server/176170.html

相关文章

案例驱动的 IT 团队管理:创新与突破之路:第三章 项目攻坚:从流程优化到敏捷破局-3.1.2需求分级与资源调配策略

👉 点击关注不迷路 👉 点击关注不迷路 👉 点击关注不迷路 文章大纲 3.1.2 需求分级与资源调配策略:构建敏捷破局的双引擎一、需求管理的范式革命:从线性到动态1.1 技术迭代倒逼管理创新1.2 需求分级的战略价值 二、需求…

FreeRTOS移植并实现一个多任务程序

打开CubeMX,点击如图 输入自己的芯片型号,我这里是STM32F103C8T6 选择好后点击start project 依次改为 依次改为 依次改为 在这里把频率改为72MHz 用keil的改成MDK_ARM 勾上 生成代码即可 ——————————————————————————————…

SpringMVC(四)Restful软件架构风格

目录 ​编辑 API接口设计的架构风格 一 Dao层实现(处理数据库) 二 Sercice层实现(处理业务逻辑) 三 Controller层(处理http请求) 四 补充知识点 1 PathVariable - 路径变量 2 CrossOrigin(Origins …

Unity 解决TMP_Text 文字显示异常的问题

问题 Unity 中TMP_Text 文字显示异常大多可分为两种情况。①制作TMP 字体选用的文本不包含该文字;②制作TMP 字体选用的ttf 源不包含该文字。 第一种情况,制作TMP 字体选用的文本不包含,只需在选用的Charater File 中添加再重新生成即可。 …

论文精度:Transformers without Normalization

前言 论文题目:Transformers without Normalization 作者:Jiachen Zhu 1,2 , Xinlei Chen 1 , Kaiming He 3 , Yann LeCun 1,2 , Zhuang Liu 1,4,† 论文地址:https://arxiv.org/pdf/2503.10282 摘要 这篇论文探讨了现代神经网络中广泛使用的归一化层是否是必不可少的。…

CSS中z-index使用详情

定位层级 1.定位元素的显示层级比普通元素高,无论什么定位,显示层级都是一样的; 2.如果位置发生重叠,默认情况是:后面的元素,会显示在前面元素之上; 3.可以通过CSS属性z-index调整元素的显示层级; 4.z-index的属性值是数字,没有单位,值越大显示层级越高; 5.只有定位的元素…

NLP高频面试题(四)——BN和LN的区别与联系,为什么attention要用LN

在深度学习模型中,Normalization是一种极为重要的技巧,Batch Normalization(BN)和Layer Normalization(LN)是其中最为常用的两种方法。然而,二者在实际应用中有着明显的区别与联系,尤…

解锁 AI 开发的无限可能:邀请您加入 coze-sharp 开源项目

大家好!今天我要向大家介绍一个充满潜力的开源项目——coze-sharp!这是一个基于 C# 开发的 Coze 客户端,旨在帮助开发者轻松接入 Coze AI 平台,打造智能应用。项目地址在这里:https://github.com/zhulige/coze-sharp&a…