VSCode下.json文件的编写之(1) linux/g++ (2).json中参数与预定义变量的意义解释

0 引言

转入linux/VSCode编程之后,迫切了解到有必有较为系统地学习一下VSCode中相关配置文件的写法。下面将分为 linux/g++编译指令、.json文件关键词/替换变量的意义、编译链接过程原理分析几个部分进行介绍,并以opencv为例,将上述知识综合运用。

1 linux/g++编译指令介绍

参照BattleScars的博客,摘取其中对本文有用的部分进行运用,博客链接如下,质量非常之高,表示感谢!!!

https://www.jb51.net/article/183540.htm

(1)针对一个完整的、单一的.cpp文件,helloworld.cpp,其编译指令如下。

$ g++ helloworld.cpp

编译器g++通过检查命令行中指定的文件的后缀名可识别其为C++源代码文件。编译器默认的动作:编译源代码文件生成对象文件(object file),链接对象文件和c++库中的函数得到可执行程序。然后删除对象文件。由于命令行中未指定可执行程序的文件名,编译器采用默认的a.out。程序的运行方式如下,

$ ./a.out

如果要指定可执行程序的文件名,使用 "-o"参数,如下,

$ g++ -std=c++11 helloworld.cpp -o helloworld

暂时了解到这里就可以了,在编译多个源文件生成可执行程序时,可参照上述博客内容。

(2)g++相关参数的意义

  参考了此贴,表达感谢!

https://www.jb51.net/article/183542.htm

  1 g++ -I[path](大写的i,即include path) 编译程序按照指定的路径去搜索头文件,指定的路径为第一个去寻找的路径,eg

g++ -I/usr/include

  2 g++ -L[lib](大写的L) 编译程序按照-L指定的路径进去寻找文件,一般的在-L的后面可以一次用-l指定多个库文件 ,eg

g++ -L/usr/lib/x86_64-linux-gnu

  3 g++ -l [掐头去尾的库名](小写L) 编译程序到系统默认路径寻找库文件,库文件的格式如下。

g++ -lz #库文件的名称为libz.so,库名为z

  如果找不到,那么到当前目录下找;如果还找不到,那么到LD_LIBRARY_PATH等环境变量置顶的路径中去查找;如果仍然找不到,那么编译程序提示找不到库。

2 .json文件参数的意义

VSCode采用.json结尾的文件作为配置文件,包含关键词和相关参数两个部分。以本人编写的opencv中的参数文件为例进行解释,如下。

(1)launch.json

参考了VSCode官网上的两个帖子,链接如下。

https://code.visualstudio.com/docs/languages/cpp # c++编程环境配置https://code.visualstudio.com/docs/editor/debugging#_launch-configurations #详细解释了launch.json中的参数的含义

为了能够debugging,需要生成一个launch.json文件,Linux下VSCode支持的的调试器为GDB,配置时点击configure按钮并选择 c++(GDB/LLDB),即可创建一个launch.json文件.

其中,preLauchTask可将launch.json和tasks.json文件关联起来,用于在调试前完成build任务。

{
 // 使用 IntelliSense 了解相关属性。
 // 悬停以查看现有属性的描述。
 // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
 "version": "0.2.0",
 "configurations": [
 {
 "name": "(gdb) Launch", // 强制:就一个名字而已,但是是必须要有的
 "type": "cppdbg", // 强制:调试器的类型,Node debugger for node, php for PHP , go for GO
 "request": "launch", // 强制:launch/attach
 "program": "${workspaceFolder}/${fileBasenameNoExtension}.out", // 可执行文件的路径
 "miDebuggerPath": "/usr/bin/gdb", // 调试器的位置
 "preLaunchTask":"build", // 调试前编译任务名称
 "args": [], // 调试参数
 "stopAtEntry": false,
 "cwd": "${workspaceFolder}", // 当前工作目录
 "environment": [], // 当前项目环境变量
 "externalConsole": true,
 "MIMode": "gdb", // 调试器模式/类型
 "setupCommands": [
 {
 "description": "Enable pretty-printing for gdb",
 "text": "-enable-pretty-printing",
 "ignoreFailures": true
 }
 ]
 }
 ]
}

(2)tasks.json

参考了VSCode的两个文档,链接如下。

https://code.visualstudio.com/docs/languages/cpp # c++配置环境中的例子https://code.visualstudio.com/docs/editor/tasks#vscode # 专门介绍tasks.json的

想从VSCode中构建应用程序,必须要生成一个tasks.json文件。生成时,需要指定编译器为"g++",并在args[]中编写 g++编译指令.

{
 // 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", // 编译任务的类型,通常为shell/process类型
 "command": "g++", // 编译命令
 "args":[
 "-g", // 该参数使编译器在编译的时候产生调试信息
 "${workspaceFolder}/${fileBasename}", // 被编译文件,通常为.cpp/.c/.cc文件等
 "-I", // include path指令
 "/usr/include",
 "-L", // lib路径
 "/usr/lib/x86_64-linux-gnu",
 "-l", // 链接库文件1
 "opencv_core",
 "-l", // 链接库文件2
 "opencv_highgui",
 "-o", // 生成指定名称的可执行文件
 "${workspaceFolder}/${fileBasenameNoExtension}.out"           /* -g hello.cpp -I/usr/include -L/usr/lib/x86_64-linux-gnu -lopencv_core -o hello.out */
 ],
 "group": {
 "kind": "build",
 "isDefault": true
 }
 },
 {
 "label": "cmakebuild",
 "type": "shell",
 "command": "cd build && cmake ../ && make", // shell 编译命令,做并运算,即前一命令执行失败,则后一命令也不执行
 "args": []
 }
 ] 

}

(3)预定义变量的意义解释

参考了该贴,表示感谢。

https://www.jb51.net/article/183162.htm

${workspaceFolder} :表示当前workspace文件夹路径,如C:\Users\admin\Desktop\test
${workspaceRootFolderName}:表示workspace的文件夹名,如test
${file}:文件自身的绝对路径,如C:\Users\admin\Desktop\test\.vscode\launch.json
${relativeFile}:文件在workspace中的路径,如.vscode\launch.json
${fileBasenameNoExtension}:当前文件的文件名,不带后缀,如hello/launch
${fileBasename}:当前文件的文件名,如 hello.cpp/launch.json等
${fileDirname}:文件所在的文件夹路径,也即C:\Users\admin\Desktop\test\.vscode
${fileExtname}:当前文件的后缀,也即.json
${lineNumber}:当前文件光标所在的行号
${env:PATH}:系统中的环境变量

总结

到此这篇关于VSCode下.json文件的编写之(1) linux/g++ (2).json中参数与预定义变量的意义解释的文章就介绍到这了,更多相关VSCode .json文件编写内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • vsCode中配置setings.json的技巧

    在前端开发中,有一个非常好用的工具,Visual Studio Code,简称VS code.都不用我安利VS code,大家就会乖乖的去用,无数个大言不惭的攻城狮,都被VS code比德芙还丝滑的强大功能所折服. 现在使用Vscode编码的人越来越多,凭借着免费,开源,轻量,跨平台的特点收货了一大批忠实粉丝 最近因项目需要开始使用Vscode,因此做了一番研究,现在把个人的一些小经验分享给大家,首先我们来看看setings.json配置 { "window.zoomLevel": 1

  • 浅析VSCode launch.json中的各种替换变量的意思 ${workspaceFolder} ${file} ${fileBasename} ${fileDirname}等

    VS Code supports variable substitution inside strings in launch.json and has the following predefined variables: ${workspaceFolder} - the path of the folder opened in VS Code ${workspaceRootFolderName} - the name of the folder opened in VS Code witho

  • 浅析VSCode tasks.json中的各种替换变量的意思 ${workspaceFolder} ${file} ${fileBasename} ${fileDirname}等

    When authoring tasks configurations, it is often useful to have a set of predefined common variables. VS Code supports variable substitution inside strings in the tasks.json file and has the following predefined variables: ${workspaceFolder} the path

  • VSCode下.json文件的编写之(1) linux/g++ (2).json中参数与预定义变量的意义解释

    0 引言 转入linux/VSCode编程之后,迫切了解到有必有较为系统地学习一下VSCode中相关配置文件的写法.下面将分为 linux/g++编译指令..json文件关键词/替换变量的意义.编译链接过程原理分析几个部分进行介绍,并以opencv为例,将上述知识综合运用. 1 linux/g++编译指令介绍 参照BattleScars的博客,摘取其中对本文有用的部分进行运用,博客链接如下,质量非常之高,表示感谢!!! https://www.jb51.net/article/183540.ht

  • C++操作json文件以及jsoncpp配置详解

    前言 json文件是比较轻量级的文件,格式简单,使用方便.用来存放信息相比其他方式有自己得天独厚的优势. 今天给大家分享的是如何利用C++来操作json文件. 如果你知道如何使用jsoncpp类库,可以不用看附,如果第一次使用,请先到最后,将环境配置好,再进行操作. 一.json文件简介 1.json文件 JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式.它基于 ECMAScript (欧洲计算机协会制定的js规范)的一个子集,采用完

  • Python中优雅处理JSON文件的方法实例

    目录 1. 引言 2. 什么是JSON文件? 3. 使用Python处理JSON文件 3.1. 将JSON文件读取为字典类型 3.2. 将JSON文件读取为Pandas类型 3.3. 使用Pandas读取嵌套JSON类型 3.4. 访问特定位置的数据 3.5. 导出JSON 3.6. 格式化输出 3.7. 输出字段排序 4.总结 5.参考 1. 引言 在本文中,我们将学习如何使用Python读取.解析和编写JSON文件. 我们将讨论如何最好地处理简单的JSON文件以及嵌套的JSON文件,当然我们

  • 详解vue中使用express+fetch获取本地json文件

    自己在做个vue小demo的时候,想模拟从服务器获取json数据的过程,一开始的想法是使用fetch直接获取本地的json文件,无论是install了json-loader还是把json文件放在index.html的目录下或webpck.config.js里output的目录下,但是fetch一直报找不到文件.然后决定用fetch向express服务器发送请求,由服务器返回json数据. express服务器 先写一个简单的express服务器,只有一个接口,起到示例作用就行了.back.js如

  • 解决JavaWeb读取本地json文件以及乱码的问题

    最近在开发项目的时候遇到一个问题,在myecilpes上使用googlede gson读取项目中的json文件成功,然后把项目发布到tomcat上再使用同样的方法,会提示"系统找不到指定的路径" 文件放在src/config/下 JsonParser parser = new JsonParser(); JsonObject object = (JsonObject) parser.parse(new FileReader("config/Test.json"));

  • JSON文件及Python对JSON文件的读写操作

    一,什么是JSON文件 JSON和XML都是互联网上数据交换的主要载体. 在JSON出现之前,大家一直用XML来传递数据.因为XML是一种纯文本格式,所以它适合在网络上交换数据.XML本身不算复杂,但是,加上DTD.XSD.XPath.XSLT等一大堆复杂的规范以后,任何正常的软件开发人员碰到XML都会感觉头大了,最后大家发现,即使你努力钻研几个月,也未必搞得清楚XML的规范.于是,道格拉斯·克罗克福特(Douglas Crockford)发明了JSON这种超轻量级的数据交换语言,由于JSON非

  • java比较两个json文件的差异及说明

    目录 比较两个json文件的差异 推荐java目前比较常用的4个json库 一.什么是JSON? 二.常用的四种JSON库 比较两个json文件的差异 其实是以第一个json文件为准,查看第二个对比第一个的差异. //排序 public static JSONArray sortJsonArray(JSONArray array) { List<Object> list = array.toJavaList(Object.class); list.sort(Comparator.compari

  • ionic3+Angular4实现接口请求及本地json文件读取示例

    一 准备工作 首先,ionic3+Angular4的开发环境你得有,这里就不赘述.环境准备好,创建一个空白项目,模板自选. 二 实现过程 1 新建json文件和service service记得在app.module.ts中引用 json和service 2 json文件格式 格式类似这样,根据实际需求决定. [ { "id":"1", "name":"xiehan", "age":"24&quo

  • 详解ASP.NET Core 在 JSON 文件中配置依赖注入

    前言 在上一篇文章中写了如何在MVC中配置全局路由前缀,今天给大家介绍一下如何在在 json 文件中配置依赖注入. 在以前的 ASP.NET 4+ (MVC,Web Api,Owin,SingalR等)时候,都是提供了专有的接口以供使用第三方的依赖注入组件,比如我们常用的会使用 Autofac.Untiy.String.Net 等,这些第三放依赖注入组件基本上都提供了一套配置注入或者配置生命周期的方式,除了直接配置到类里面之外,还提供了要么使用 xml 文件,要么使用 json 等,那么在新的

  • android开发之Json文件的读写的示例代码

    Json格式是常见的读写形式.读写Json文件也是常用的操作. 这次来实践一下Json文件的读写. 首先在SD卡上的读写权限是一定要申请的.那么还是老办法,在 AndroidManifest.xml 文件中添加 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 这在android 6.0 以下的系统就足够了.6.0及以上的更新的系统,在代码中需要申请SD卡的读写权限. 先

随机推荐