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.pswp.cn/web/72785.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/72785.shtml
英文地址,請注明出處:http://en.pswp.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語言家族的一員,以其簡潔性和強大的表達能力而聞名。在現代軟件開發中,施行壓力測試是一項關鍵技術,旨在評估系統在高負載或極端情況下的表現。在這篇…