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

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, Release

include_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.kler.cn/a/589912.html

相关文章:

  • 系统架构设计师—案例分析—数据库篇—分布式缓存技术
  • 【C++标准库类型】深入理解vector类型(2):迭代器与算法
  • 做游戏的发展方向
  • Java泛型程序设计使用方法
  • 矩阵期望 E 的含义:概率
  • npm : 无法加载文件 C:\Program Files\nodejs\npm.ps1,因为在此系统上禁止运行脚本的处理方法
  • 【软件工程】04_面向对象需求分析方法
  • 【C++进阶一】STL和string
  • SAP HANA on AWS Amazon Web Services
  • 一个使用Python和相关深度学习库(如`PyTorch`)实现GCN(图卷积网络)与PPO(近端策略优化)强化学习模型结合的详细代码示例
  • 设计模式-对象创建
  • 【存储中间件】Redis核心技术与实战(四):Redis高并发高可用(Redis集群介绍与搭建)
  • springboot纯干货
  • RAGFlow部署与使用(开源本地知识库管理系统,包括kibana配置)
  • Linux驱动开发之中断处理
  • kafka详细介绍以及使用
  • Java语言前言
  • 基于ssm的电子病历系统(全套)
  • 标贝自动化数据标注平台推动AI数据训练革新
  • C#语言的事务管理