前言
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的依赖文件。