VSCode + CMake

参考文献:

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

文章目录

CMake 配置

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

python 复制代码
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 构建出的可执行文件路径,

json 复制代码
{
    "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 中的设置来配置环境。因此该文件不需要编写。

相关推荐
地平线开发者4 小时前
SparseDrive 模型导出与性能优化实战
算法·自动驾驶
董董灿是个攻城狮5 小时前
大模型连载2:初步认识 tokenizer 的过程
算法
地平线开发者5 小时前
地平线 VP 接口工程实践(一):hbVPRoiResize 接口功能、使用约束与典型问题总结
算法·自动驾驶
罗西的思考5 小时前
AI Agent框架探秘:拆解 OpenHands(10)--- Runtime
人工智能·算法·机器学习
HXhlx9 小时前
CART决策树基本原理
算法·机器学习
Wect9 小时前
LeetCode 210. 课程表 II 题解:Kahn算法+DFS 双解法精讲
前端·算法·typescript
颜酱10 小时前
单调队列:滑动窗口极值问题的最优解(通用模板版)
javascript·后端·算法
Gorway16 小时前
解析残差网络 (ResNet)
算法
拖拉斯旋风17 小时前
LeetCode 经典算法题解析:优先队列与广度优先搜索的巧妙应用
算法
Wect17 小时前
LeetCode 207. 课程表:两种解法(BFS+DFS)详细解析
前端·算法·typescript