一、Settings.json配置
注意这里根据需要单文件还是多文件编译只选一个。
"code-runner.executorMap": {
// 多文件cpp编译
"cpp": "(if not exist $dirbin (mkdir $dirbin)) && cd $dir && g++ *.cpp -o .\\bin\\$fileNameWithoutExt && $dirbin\\$fileNameWithoutExt",
// 此为单文件编译:
"cpp": "(if not exist $dirbin (mkdir $dirbin)) && cd $dir && g++ $fileName -o .\\bin\\$fileNameWithoutExt && $dirbin\\$fileNameWithoutExt",
}
二、分块解释
1、若bin文件夹不存在,创建bin文件夹
若只是mkdir的话如果bin文件夹已存在会报错子目录或文件已存在,作为一个懒得自己创建bin文件夹的咸鱼属实花了一番功夫。
由于code runner编译其实就是一条在VSCode的terminal界面运行的命令。
就去查了一下是跟cmd一样的命令,查到在cmd中想要根据文件夹是否存在进行操作应该这样搞:
if not exist %GenFile% (
rem 复制文件result.jtl
copy %SourceFile% %GenFile%
echo %GenFile% 文件不存在,已创建该文件!
) else (
echo %GenFile% 文件已存在,无需创建!
)
基于自己的需求就改成了:
(if not exist $dirbin (mkdir $dirbin))
之所以要在外边加括号,是因为不加的话,词条命令后变得&&就会被收录到这个if的else里边。也就是说(mkdir $dirbin)运行完后边的就不运行了。害,都是多次失败的血泪呀。
2、编译C++多文件
刚学到C++ Primer Plus 9.1,第一次接触多文件编译。这里倒是简单,直接在g++后边接上*.cpp代表编译所有的cpp文件就行了。
3、生成.exe文件并运行
-o .\bin\$fileNameWithoutExt使.exe文件生成到bin文件夹下。
$dirbin\$fileNameWithoutExt则在bin文件夹下找到.exe并执行他,将输出显示到terminal中。