40 VSCode下.json文件的編寫
0 引言
轉入linux/VSCode編程之後,迫切了解到有必有較為系統地學習一下VSCode中相關配置文件的寫法。下面將分為 linux/g++編譯指令、.json文件關鍵詞/替換變量的意義、編譯鏈接過程原理分析幾個部分進行介紹,並以opencv為例,將上述知識綜合運用。
1 linux/g++編譯指令介紹
參照BattleScars的博客,摘取其中對本文有用的部分進行運用,博客鏈接如下,質量非常之高,表示感謝!!!
https://www.cnblogs.com/battlescars/p/cpp_linux_gcc.html
(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://blog.csdn.net/lin_008/article/details/77600483
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
為了能夠debugging,需要生成一個launch.json文件。
{ // 使用 IntelliSense 了解相關屬性。 // 懸停以查看現有屬性的描述。 // 欲了解更多信息,請訪問: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ { "name": "(gdb) Launch", "type": "cppdbg", "request": "launch", "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 } ] } ] }
40 VSCode下.json文件的編寫