概述

  • 本文将介绍 VScode + cmakewindows10上编译c++代码
  • 前提: 我之前已经安装过VS2017, 故 编译将采用cl.exe。

开始之前

本文演示环境基于 windows10。cmake和 VScode版本如下。

VS code版本: 1.54.1

cmake 版本: 3.18

VSCode插件安装

我的插件安装的比较多,你瞧



还有

编译本文演示的代码需要打开VScode插件商店或者离线安装如下插件:

c/c++

下载地址: 点我直达官网

点击 install 将启动vscode在线安装 或者右侧的 download extension再离线安装

cmake

下载地址: 点我直达官网

cmake tools

下载地址: 点我直达官网

插件安装后,下面开始准备安装cmake

cmake

  • 下载地址: https://cmake.org/download/

  • 下载适合自己的版本, 安装后,将其 cmake.exe所在目录添加到系统环境变量(或者打开命令行转到cmake.exe所在目录),测试cmake是否安装成功。

  • 测试键入命令cmake --version. 如果弹出类似下面的输出,则说明成功

使用VScode打开文件夹

方便测试,可在桌面创建文件夹, 这里取名为 udp_socket 为例。创建成功后,使用VScode打开该文件夹, 方式有两种:

  • 1.先打开VScode, VS code首页会提示你选择打开文件夹



    VScode 菜单也可以打开文件夹

  • 2.打开创建的udp_socket 文件夹,此时,点击鼠标右键菜单中选择 通过VScode打开 , 即可。

演示代码

基于打开的VScode,创建 名为 main.cc 的文件



创建结束后是这样的



文件已经准备好,准备一段测试代码,如下

#include <iostream>

/// 增加函数调试使用
void hello_vs_code_()
{
using namespace std;
int x = 11 + 22 + 33;
cout << "\n x = " << x;
} int main(int argc, char* argv[], char* en[])
{
using namespace std;
cout << "hello vscode";
hello_vs_code_(); return 0;
}

点击保存。

准备cmakelists.txt文件

  • cmakelists.txt文件放在创建的 udp_socket文件夹下。

    可以创建默认的 CMakeLists.txt文件,不过,文件内容不是我想要的,我选择了更加通俗易懂的 modern cmake。 cmakelists.txt文件内容如下
cmake_minimum_required(VERSION 3.18)

# ---------------------------------------------------------------------------------------------------
# 1. set name
project(lib_udp) # ---------------------------------------------------------------------------------------------------
# 2. to get all source files
# set source files
# -------------------------------------------------------------------------------------
file(GLOB_RECURSE udp_src ${CMAKE_CURRENT_SOURCE_DIR}/src/*.cc) # build a library for udp
function(lib_udp_on_win)
# dynamic library
# --------------------------------------------------------------------------------------------------- # compiler is vs
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
# build program
add_executable( ${PROJECT_NAME} ${lib_udp_type} ${udp_src} ) # .h and .cxx files
target_sources(${PROJECT_NAME} PRIVATE ${udp_src} ) # use c++11
target_compile_features(${PROJECT_NAME} PRIVATE cxx_std_11) endif("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
endfunction(lib_udp_on_win) # build
# ---------------------------------------------------------------------------------------------
if (CMAKE_SYSTEM_NAME MATCHES "Windows")
lib_udp_on_win()
endif()

这段配置代码 仅配置一个可执行程项目。cmake语法不是本文的重点。

cmake tools 插件配置

  • 一定要理解, VScode仅仅是一个软件,没有Visual studio 2017这样的IDE集成度高,什么都配置好了。
  • 打开VScode 的设置, 键入: cmake



    设置cmake.exe所在路径,如图,我的cmake安装在C:\major\development\tools\cmake_64\bin目录下,同时将cmake.exe添加到目录后面,指定cmake的绝对路径。

开始编译代码

下面的操作都是基于: ctrl + shift + p 快捷键。

1. select a kit

按下快捷键 ctrl + shift + p , 键入: cmake:select a kit, 回车选择适合自己的工具包。



我这里演示的是x86

2. select variant

按下快捷键 ctrl + shift + p , 键入: cmake:select variant



因为要演示调试,这里选择 debug.

build

按下快捷键 ctrl + shift + p , 键入: cmake:build, 选择 cmake:build**. ![](https://img2020.cnblogs.com/blog/1630599/202103/1630599-20210314003520456-1189206038.png) 观察输出`窗口, 可以看到已经编译成功

debug调试

设置好断点,按下快捷键 ctrl + shift + p , 键入: cmake:debug , 程序将执行,并停在断点所在位置,



调试快捷键和VS开发IDE一致。

左侧可以观察变量的值。

继续运行F5

F5, 程序将运行结束。

补充(可有可无)

如果你更改了 cmakelists.txt文件,可以使用命令 cmake:configure实现项目配置,再执行build就OK了

windows10使用vscode+cmake编译c++代码的更多相关文章

  1. windows10下vscode+cmake编译Qt5代码

    概述 本文演示环境: windows10 cmake version:3.18 qt version: 5.14 vscode version: 1.54.1 本文演示环境基于在线模式, 离线使用VS ...

  2. windows10下vscode+cmake编译Qt5代码(2)

    概述 本文依赖 前文 本文将介绍使用cmake语法屏蔽运行Qt exe的cmd窗口 解决办法 配置VS项目属性, 缺点: cmake重新 configure后,项目属性会重置,再次运行还将出现cmd弹 ...

  3. centos 7 vscode cmake 编译c++工程

    一.环境说明 1)gcc/g++  cmake安装建议 gcc/g++内核自带的即可,如果需要新的自行安装, cmake也一样,如有需要新的版本自行安装. 2)vscode安装插件 必要的插件c/c+ ...

  4. vscode, cmake编译多个C++文件

    目的是利用vscode及相关插件编译多个C++文件. 我已经装好cmake和mingw并且将它们的路径添加到系统变量path中了. vscode装上如下几个插件: 点击vscode左上角   文件-& ...

  5. linux 下 VSCODE 使用CMake编译STM32程序

    项目在做什么 项目地址 本项目是为了研究MCU在linux下开发而做的 --build 存放cmake编译生成的文件 --cmake 存放cmake编译时会用到的文件,比如工具链检查.编译选项等 -- ...

  6. AndroidStudio用Cmake方式编译NDK代码(cmake配置.a库)

    1.cmake是什么? CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程).他能够输出各种各样的makefile或者project文件,能测试编译器所支持的C+ ...

  7. ubuntu下,VSCode采用cmake编译C++工程

    首先在VSCode中下载CMake和CMake Tools两个插件. 选中CMake Tools,可以看到在VSCode中如何使用cmake编译C++工程的教程. 官网教程 最重要且最实用,看这个网址 ...

  8. Win10 下Cmake编译配置 Opencv3.1 + Cuda7.5 + VS2013

    折腾了三天终于配置成功了,在此写下编译配置的全部步骤和遇到的很多坑. 整体介绍: OpenCV 中 CUDA 实现的函数还不是太多,使用前要在OpenCV的官网上确认以下你想要的功能是否已经实现,否则 ...

  9. [转]VS2015+OpenCV3.3 GPU模块和opencv_contrib模块的编译以及采用CMake编译opencv_contrib时提示“No extra modules found in folder”问题的解决方案

    据官方说法,目前还不是太稳定的算法模块都在opencv_contrib里边,由于不稳定,所以不能在release版本里发行,只有在稳定以后才会放进release里边.但是这里边有很多我们经常要用的算法 ...

随机推荐

  1. [转载]CSP-J/S 第一轮知识点选讲

    CSP-J/S 第一轮知识点选讲 转载自这里 感谢原博主的大力整理! 信息学史及基本知识 一.信息学及计算机史 计算机的顶级奖项:图灵奖.冯·诺依曼奖 图灵奖:由ACM(美国计算机协会)设立于1966 ...

  2. spring-boot -配置文件值注入

    /** * 将配置文件中配置的每一个属性的值,映射到这个组件中 * @ConfigurationProperties:告诉SpringBoot将本类中的所有属性和配置文件中相关的配置进行绑定: 默认在 ...

  3. fatal error: runtime: out of memory

    [root@VM_0_10_centos frp_0.27.0_linux_amd64]# top top - 21:09:19 up 2 days, 4 min, 2 users, load ave ...

  4. 你不知道的iostat

    1.       作用 iostat是I/O statistics(输入/输出统计)的缩写,iostat工具将对系统的磁盘操作活动进行监视.它的特点是汇报磁盘活动统计情况,同时也会汇报出CPU使用情况 ...

  5. SQL-关联表查询(连表查询)

    0.例如:select * from T1,T2     where T1.a=T2.a 1.连表查询 <=> join(inner join)内连接查询 数据源: Persion表:  ...

  6. 基于tp5免费开源的后台管理系统

    基于tp5免费开源的后台管理系统 可以自定义后台菜单,模块等. 后台模板用的是:AdminLTE 简单的后台基础管理系统,有兴趣开源看看 代码地址:https://github.com/mengzhi ...

  7. Oracle-一张表中增加计算某列值重复的次数列,并且把表中其他列也显示出来,或者在显示过程中做一些过滤

    总结: 1.计算某列值(数值or字符串)重复的次数 select 列1,count( 列1 or *) count1  from table1 group by 列1 输出的表为:第一列是保留唯一值的 ...

  8. 深度探讨 PHP 之性能

    1.缘起 关于PHP,很多人的直观感觉是PHP是一种灵活的脚本语言,库类丰富,使用简单,安全,非常适合WEB开发,但性能低下.PHP的性能是否真的就 如同大家的感觉一样的差呢?本文就是围绕这么一个话题 ...

  9. Kubernetes主机间cluster ip时通时不通

    1.问题现象 测试部署了一个service,包括2个pod,分别在node1和node2上. $ kubectl get svc NAME CLUSTER-IP EXTERNAL-IP PORT(S) ...

  10. 非寻常方式学习ApacheTomcat架构及10.0.12源码编译

    概述 开启博客分享已近三个月,感谢所有花时间精力和小编一路学习和成长的伙伴们,有你们的支持,我们继续再接再厉 **本人博客网站 **IT小神 www.itxiaoshen.com 定义 Tomcat官 ...