ubuntu中使用VsCode+Eigen创建Eiegn应用程序

Wesley13
• 阅读 707

Visual studio code是微软发布的一个运行于 Mac OS X、Windows和 Linux 之上的,针对于编写现代 Web 和云应用的跨平台源代码编辑器。

1. VsCode安装

VScode官网下载.deb文件,网址链接如下:https://code.visualstudio.com/#alt-downloads

ubuntu中使用VsCode+Eigen创建Eiegn应用程序

执行下面命令安装VsCode: sudo dpkg -i code_1.48.2-1598353430_amd64.deb

ubuntu中使用VsCode+Eigen创建Eiegn应用程序

在应用程序中搜索vscode可以看到已经安装成功。

ubuntu中使用VsCode+Eigen创建Eiegn应用程序

2. Vscode环境配置

2.1 安装c/c++插件

通过左侧的Extensions栏目安装C/C++插件,这里我已经安装。

ubuntu中使用VsCode+Eigen创建Eiegn应用程序

2.2 建立工程

1. 由于VScode是以文件夹的形式管理工程的,因此我们首先新建一个文件夹,我这里取名叫eigen_VsCode,表示创建基于Vs_Code创建一个Eigen应用程序,文件夹内容是空的

ubuntu中使用VsCode+Eigen创建Eiegn应用程序

ubuntu中使用VsCode+Eigen创建Eiegn应用程序

2. 使用VsCode打开文件夹eigen_VsCode,点击左侧的Explorer,然后点击Open Folder。

ubuntu中使用VsCode+Eigen创建Eiegn应用程序

ubuntu中使用VsCode+Eigen创建Eiegn应用程序

ubuntu中使用VsCode+Eigen创建Eiegn应用程序

3. 在eigen_VsCode目录下新建.cpp文件,这里使用已经存在的eigenMatrix.cpp文件,如下所示:

ubuntu中使用VsCode+Eigen创建Eiegn应用程序

2.3 更改配置文件(launch.json)

1. 点击左侧的Run, 点击创建一个launch.json文件,C++(GDB/LLDB),将自动生成launch.json文件

ubuntu中使用VsCode+Eigen创建Eiegn应用程序

2. 生成的默认launch.json文件如下。

ubuntu中使用VsCode+Eigen创建Eiegn应用程序

3. 将默认launch.json修改成为如下,launch.json中各个字段的含义,后面学习中会逐个讲解。

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "(gdb) 启动",
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceFolder}/${fileBasenameNoExtension}",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "preLaunchTask": "build",
            "setupCommands": [
                {
                    "description": "为 gdb 启用整齐打印",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ]
        }
    ]
}

2.4 添加构建(编译、链接等)任务(tasks.json)

为了方便在VScode里编译C++代码,我们可以将类似g++ -g main.cpp等g++命令写入VScode的任务系统。首先,利用快捷键ctrl+shift+p打开命令行,输入Tasks: Run task,会出现如下提示:

ubuntu中使用VsCode+Eigen创建Eiegn应用程序

1. 选择No Configured tasks. Configure Tasks...

ubuntu中使用VsCode+Eigen创建Eiegn应用程序

2. 选择Create task.json file from template

ubuntu中使用VsCode+Eigen创建Eiegn应用程序

3. 选择Others

ubuntu中使用VsCode+Eigen创建Eiegn应用程序

4. 生成的默认tasks.json文件如下

ubuntu中使用VsCode+Eigen创建Eiegn应用程序

这里的label为任务名,我们将”label"= "echo"改为”label"= "build"。由于我们的指令是g++,这里将”command“=”echo Hello“改为”command“=”g++“。然后添加g++的参数args。如果我们的g++指令为:g++ -g main.cpp,这里可以把参数设置为如下

ubuntu中使用VsCode+Eigen创建Eiegn应用程序

如果我们想配置g++指令为:g++ -g main.cpp -std=c++11 -o main.out,则参数可设置为:

ubuntu中使用VsCode+Eigen创建Eiegn应用程序

{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "2.0.0",
    "tasks": [
        {
            "label": "build",
            "type": "shell",
            "command": "g++",
            "args": ["-g", "${file}", "-std=c++11", "-o", "${fileBasenameNoExtension}"]
        }
    ]
}

2.5 添加配置库文件支持

使用快捷键ctrl+shift+p调出命令行,选择执行我们的build任务,但是发现build出现错误,提示:

 fatal error: Eigen/Core: 没有那个文件或目录
 #include <Eigen/Core>
          ^~~~~~~~~~~~
compilation terminated.

ubuntu中使用VsCode+Eigen创建Eiegn应用程序

ubuntu中使用VsCode+Eigen创建Eiegn应用程序

由于代码中使用了eigen库文件,需要配置包含库文件路径。ctrl+shift+p调出命令行,选择C/C++: Edit Configurations(UI)

ubuntu中使用VsCode+Eigen创建Eiegn应用程序

点击c_cpp_properties.json打开配置文件。

ubuntu中使用VsCode+Eigen创建Eiegn应用程序

配置如下:

ubuntu中使用VsCode+Eigen创建Eiegn应用程序

我们只需要再红框的 IncludePath 内加上需要的头文件路径即可,

这里提示下,常用库的头文件常见安装位置如下:

  • /usr/include/
  • /usr/local/include

所以这两个基本要加上的,如果你不知道你安装的库的头文件在哪,但是知道关键的头文件名称,则可以用 locate 命令来查找:

locate ros.h| grep include

这个命令的意思是查找所有ros.h的位置,并且找出路径中带有 include 字段的路径。最终的c_cpp_properties.json配置如下:

{
    "configurations": [
        {
            "name": "Linux",
            "includePath": [
                "${workspaceFolder}/**",
                "/usr/include/",
                "/usr/local/include/",
                "/usr/include/eigen3/"
            ],
            "defines": [],
            "compilerPath": "/usr/bin/gcc",
            "cStandard": "c11",
            "cppStandard": "c++11",
            "intelliSenseMode": "clang-x64"
        }
    ],
    "version": 4
}

2.6 编译

使用快捷键ctrl+shift+p调出命令行,选择执行我们的build任务,生成eigenMatrix可执行文件。

ubuntu中使用VsCode+Eigen创建Eiegn应用程序

2.7 调式运行

ubuntu中使用VsCode+Eigen创建Eiegn应用程序

首先点击产生断点,然后启动调式。

ubuntu中使用VsCode+Eigen创建Eiegn应用程序

点赞
收藏
评论区
推荐文章
Jacquelyn38 Jacquelyn38
1年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。 1、使用解构获取json数据let jsonData   id: 1, status: "OK", data: ['a', 'b'] ; let  id, status, data: number   jsonData; console.log(id, status, number )
blmius blmius
1年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录 问题 用navicat导入数据时,报错: 原因这是因为当前的MySQL不支持datetime为0的情况。 解决修改sql\mode: sql\mode:SQL Mode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。 全局s
Stella981 Stella981
11个月前
KVM调整cpu和内存
一.修改kvm虚拟机的配置 1、virsh edit centos7 找到“memory”和“vcpu”标签,将 <name>centos7</name> <uuid>2220a6d1-a36a-4fbb-8523-e078b3dfe795</uuid>
Wesley13 Wesley13
11个月前
Java日期时间API系列36
  十二时辰,古代劳动人民把一昼夜划分成十二个时段,每一个时段叫一个时辰。二十四小时和十二时辰对照表: **时辰** **时间** **24时制** 子时 深夜 11:00 - 凌晨 01:00 23:00 - 01 :00 丑时 上午 01:00 - 上午 03:00 01:00 - 03 :00 寅时 上午 03:00 - 上午 0
Wesley13 Wesley13
11个月前
MySQL查询按照指定规则排序
1.按照指定(单个)字段排序 select * from table_name order id desc; 2.按照指定(多个)字段排序 select * from table_name order id desc,status desc; 3.按照指定字段和规则排序 selec
Stella981 Stella981
11个月前
Angular material mat
Icon Icon Name mat-icon code _add\_comment_ add comment icon <mat-icon> add\_comment</mat-icon> _attach\_file_ attach file icon <mat-icon> attach\_file</mat-icon> _attach\
Wesley13 Wesley13
11个月前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
#### 背景描述 # Time: 2019-01-24T00:08:14.705724+08:00 # User@Host: **[**] @ [**] Id: ** # Schema: sentrymeta Last_errno: 0 Killed: 0 # Query_time: 0.315758 Lock_
helloworld_34035044 helloworld_34035044
2个月前
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。 uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid() 或 uuid(sep)参数说明:sep 布尔值,生成的uuid中是否包含分隔符'',缺省为
3A网络 3A网络
6天前
理解 virt、res、shr 之间的关系(linux 系统篇)
# 理解 virt、res、shr 之间的关系(linux 系统篇) **前言** 想必在 linux 上写过程序的同学都有分析进程占用多少内存的经历,或者被问到这样的问题 —— 你的程序在运行时占用了多少内存(物理内存)? 通常我们可以通过 t
3A网络 3A网络
6天前
开发一个不需要重写成 Hive QL 的大数据 SQL 引擎
# 开发一个不需要重写成 Hive QL 的大数据 SQL 引擎 学习大数据技术的核心原理,掌握一些高效的思考和思维方式,构建自己的技术知识体系。明白了原理,有时甚至不需要学习,顺着原理就可以推导出各种实现细节。 各种知识表象看杂乱无章,若只是学习