前言
vscode 的tasks.json中使用的是g++编译器命令,本文将介绍一些关于g++的常用编译命令;
内容
{
"version": "2.0.0",
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: g++.exe 生成活动文件",
"command": "C:\\minGW\\mingw64\\bin\\g++.exe",
"args": [
"-fdiagnostics-color=always",
"-g",
"${file}",
"-o",
"${fileDirname}\\${fileBasenameNoExtension}.exe"
],
"options": {
"cwd": "${fileDirname}"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
},
"detail": "编译器: C:\\minGW\\mingw64\\bin\\g++.exe"
}
]
}
上述的tasks.json是由vscode自动生成(生成方式参考链接文章:VSCode创建C++项目和编译多文件-CSDN博客) ;
"-fdiagnostics-color=always",
"-g",
"-o",
上述都是g++编译器的一些命令参数;
命令参数
基本编译和链接
g++ -o outputfile sourcefile.cpp
:编译sourcefile.cpp
并生成可执行文件outputfile
。g++ -c sourcefile.cpp
:仅编译sourcefile.cpp
生成目标文件sourcefile.o
,但不进行链接。g++ -o outputfile.o -c sourcefile.cpp
:编译sourcefile.cpp
生成目标文件outputfile.o
。g++ -o outputfile file1.o file2.o
:将目标文件file1.o
和file2.o
链接生成可执行文件outputfile
。
优化选项
-O0
:无优化(默认)。-O1
:优化生成代码和编译时间。-O2
:进一步优化,不增加编译时间。-O3
:启用所有优化。-Os
:优化生成较小的代码。-Ofast
:启用所有快速优化,不完全符合标准。
调试选项
-g
:生成调试信息,用于调试器(如gdb)。
警告和错误处理
-Wall
:启用所有常见警告。-Wextra
:启用额外的警告。-Werror
:将所有警告视为错误。-pedantic
:严格遵守ISO标准并生成警告。
编译标准
-std=c++98
:使用C++98标准。-std=c++11
:使用C++11标准。-std=c++14
:使用C++14标准。-std=c++17
:使用C++17标准。
-std=c++20
:使用C++20标准。
链接库和头文件
-llibrary
:链接库文件library
。-Ldirectory
:添加搜索库文件的目录。-Idirectory
:添加搜索头文件的目录。
宏定义
-Dname
:定义预处理器宏name
。-Dname=value
:定义预处理器宏name
并赋值为value
。-Uname
:取消定义预处理器宏name
。
其他选项
-static
:使用静态链接。-shared
:生成共享库。-fPIC
:生成与位置无关的代码,通常用于共享库。-fno-exceptions
:不使用C++异常。-fno-rtti
:不使用运行时类型识别。
特殊用途选项
-E
:仅运行预处理器,不生成目标代码。-S
:仅编译到汇编代码,不生成目标代码。-M
:生成用于make的依赖文件。