the overkill patch

This commit is contained in:
lda committed 2025-08-04 17:17:20 +07:00
1 parent af1b471799
commit 2dc4784f4b
6 files changed
+431 -84

No files matched your search

+1
View File
@@ -1,2 +1,3 @@
exe exe
*.exe *.exe
build/
+21
View File
@@ -0,0 +1,21 @@
{
"configurations": [
{
"name": "Win32",
"includePath": [
"${workspaceFolder}/**"
],
"defines": [
"_DEBUG",
"UNICODE",
"_UNICODE"
],
"windowsSdkVersion": "10.0.26100.0",
"compilerPath": "C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/MSVC/14.44.35207/bin/Hostx64/x64/cl.exe" ,
"cStandard": "c17",
"cppStandard": "c++17",
"intelliSenseMode": "windows-msvc-x64"
}
],
"version": 4
}
+52
View File
@@ -0,0 +1,52 @@
{
"version": "0.2.0",
"configurations": [
{
"name": "C++: Debug with g++",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}\\build\\debug\\${fileBasenameNoExtension}.exe",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"miDebuggerPath": "C:\\msys64\\ucrt64\\bin\\gdb.exe",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"preLaunchTask": "C++: Smart Build (Auto-detect Compiler)",
"internalConsoleOptions": "openOnSessionStart"
},
{
"name": "C++: Debug with MSVC",
"type": "cppvsdbg",
"request": "launch",
"program": "${workspaceFolder}\\build\\debug\\${fileBasenameNoExtension}.exe",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"console": "integratedTerminal",
"preLaunchTask": "C++: Smart Build (Auto-detect Compiler)"
},
{
"name": "C++: Run without debugging",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}\\build\\debug\\${fileBasenameNoExtension}.exe",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": true,
"MIMode": "gdb",
"preLaunchTask": "C++: Smart Build (Auto-detect Compiler)"
}
]
}
+64 -58
View File
@@ -1,60 +1,66 @@
{ {
"files.associations": { "files.associations": {
"ostream": "cpp", "ostream": "cpp",
"atomic": "cpp", "atomic": "cpp",
"bit": "cpp", "bit": "cpp",
"cctype": "cpp", "cctype": "cpp",
"charconv": "cpp", "charconv": "cpp",
"clocale": "cpp", "clocale": "cpp",
"cmath": "cpp", "cmath": "cpp",
"compare": "cpp", "compare": "cpp",
"concepts": "cpp", "concepts": "cpp",
"cstddef": "cpp", "cstddef": "cpp",
"cstdint": "cpp", "cstdint": "cpp",
"cstdio": "cpp", "cstdio": "cpp",
"cstdlib": "cpp", "cstdlib": "cpp",
"cstring": "cpp", "cstring": "cpp",
"ctime": "cpp", "ctime": "cpp",
"cwchar": "cpp", "cwchar": "cpp",
"exception": "cpp", "exception": "cpp",
"format": "cpp", "format": "cpp",
"initializer_list": "cpp", "initializer_list": "cpp",
"ios": "cpp", "ios": "cpp",
"iosfwd": "cpp", "iosfwd": "cpp",
"iostream": "cpp", "iostream": "cpp",
"istream": "cpp", "istream": "cpp",
"iterator": "cpp", "iterator": "cpp",
"limits": "cpp", "limits": "cpp",
"locale": "cpp", "locale": "cpp",
"memory": "cpp", "memory": "cpp",
"new": "cpp", "new": "cpp",
"stdexcept": "cpp", "stdexcept": "cpp",
"streambuf": "cpp", "streambuf": "cpp",
"string": "cpp", "string": "cpp",
"system_error": "cpp", "system_error": "cpp",
"tuple": "cpp", "tuple": "cpp",
"type_traits": "cpp", "type_traits": "cpp",
"typeinfo": "cpp", "typeinfo": "cpp",
"utility": "cpp", "utility": "cpp",
"xfacet": "cpp", "xfacet": "cpp",
"xiosbase": "cpp", "xiosbase": "cpp",
"xlocale": "cpp", "xlocale": "cpp",
"xlocbuf": "cpp", "xlocbuf": "cpp",
"xlocinfo": "cpp", "xlocinfo": "cpp",
"xlocmes": "cpp", "xlocmes": "cpp",
"xlocmon": "cpp", "xlocmon": "cpp",
"xlocnum": "cpp", "xlocnum": "cpp",
"xloctime": "cpp", "xloctime": "cpp",
"xmemory": "cpp", "xmemory": "cpp",
"xstring": "cpp", "xstring": "cpp",
"xtr1common": "cpp", "xtr1common": "cpp",
"xutility": "cpp", "xutility": "cpp",
"vector": "cpp", "vector": "cpp",
"list": "cpp", "list": "cpp",
"optional": "cpp", "optional": "cpp",
"algorithm": "cpp", "algorithm": "cpp",
"deque": "cpp", "deque": "cpp",
"queue": "cpp", "queue": "cpp",
"stack": "cpp" "stack": "cpp"
} },
"files.exclude": {
"**/*.rpyc": true,
"**/*.rpa": true,
"**/*.rpymc": true,
"**/cache/": true
}
} }
+97
View File
@@ -0,0 +1,97 @@
param(
[Parameter(Mandatory = $true)]
[string]$SourceFile,
[Parameter(Mandatory = $true)]
[string]$WorkspaceFolder,
[Parameter(Mandatory = $false)]
[string]$BuildType = "debug"
)
# Extract filename without extension
$FileBaseName = [System.IO.Path]::GetFileNameWithoutExtension($SourceFile)
$OutputPath = Join-Path $WorkspaceFolder "build\$BuildType\$FileBaseName.exe"
# Ensure build directory exists
$BuildDir = Join-Path $WorkspaceFolder "build\$BuildType"
if (-not (Test-Path $BuildDir)) {
New-Item -ItemType Directory -Path $BuildDir -Force | Out-Null
}
Write-Host "Building: $SourceFile"
Write-Host "Output: $OutputPath"
Write-Host ""
# Try g++ first
if (Get-Command g++ -ErrorAction SilentlyContinue) {
Write-Host "Using g++ compiler..." -ForegroundColor Green
if ($BuildType -eq "release") {
$gppArgs = @(
"-std=c++17"
"-Wall"
"-Wextra"
"-O2"
"-DNDEBUG"
"`"$SourceFile`""
"-o"
"`"$OutputPath`""
)
}
else {
$gppArgs = @(
"-std=c++17"
"-Wall"
"-Wextra"
"-g"
"-O0"
"`"$SourceFile`""
"-o"
"`"$OutputPath`""
)
}
& g++ @gppArgs
if ($LASTEXITCODE -eq 0) {
Write-Host "Build successful with g++!" -ForegroundColor Green
exit 0
}
else {
Write-Host "g++ build failed, trying MSVC..." -ForegroundColor Yellow
}
}
# Try MSVC as fallback
$VsDevCmd = "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\Tools\VsDevCmd.bat"
if (Test-Path $VsDevCmd) {
Write-Host "Using MSVC compiler..." -ForegroundColor Green
# Convert to absolute paths for MSVC
$AbsoluteSourceFile = Resolve-Path $SourceFile
$ObjFile = Join-Path $BuildDir "$FileBaseName.obj"
$PdbFile = Join-Path $BuildDir "$FileBaseName.pdb"
if ($BuildType -eq "release") {
$MSVCCommand = "`"$VsDevCmd`" && cl.exe /std:c++17 /W4 /O2 /DNDEBUG /EHsc /MD /Fe:`"$OutputPath`" /Fo:`"$ObjFile`" `"$AbsoluteSourceFile`""
}
else {
$MSVCCommand = "`"$VsDevCmd`" && cl.exe /std:c++17 /W4 /Zi /EHsc /MDd /Fe:`"$OutputPath`" /Fo:`"$ObjFile`" /Fd:`"$PdbFile`" `"$AbsoluteSourceFile`""
}
& cmd /c $MSVCCommand
if ($LASTEXITCODE -eq 0) {
Write-Host "Build successful with MSVC!" -ForegroundColor Green
exit 0
}
else {
Write-Host "MSVC build failed!" -ForegroundColor Red
exit 1
}
}
else {
Write-Error "No C++ compiler found! Please install g++ or Visual Studio."
exit 1
}
+196 -26
View File
@@ -1,27 +1,197 @@
{ {
"tasks": [ "version": "2.0.0",
{ "tasks": [
"type": "cppbuild", {
"label": "C/C++: g++.exe build active file", "type": "shell",
"command": "C:\\msys64\\ucrt64\\bin\\g++.exe", "label": "C++: Smart Build (Auto-detect Compiler)",
"args": [ "command": "powershell.exe",
"-fdiagnostics-color=always", "args": [
"-g", "-ExecutionPolicy",
"${file}", "Bypass",
"-o", "-File",
"${workspaceFolder}\\exe\\${fileBasenameNoExtension}.exe" "${workspaceFolder}\\.vscode\\smartbuild.ps1",
// hey check this line "-SourceFile",
], "${file}",
"-WorkspaceFolder",
"problemMatcher": [ "${workspaceFolder}",
"$gcc" "-BuildType",
], "debug"
"group": { ],
"kind": "build", "options": {
"isDefault": true "cwd": "${workspaceFolder}"
}, },
"detail": "Task generated by Debugger." "problemMatcher": ["$gcc", "$msCompile"],
} "group": {
], "kind": "build",
"version": "2.0.0" "isDefault": true
} },
"detail": "Automatically detects and uses available C++ compiler (g++ or MSVC)",
"presentation": {
"echo": true,
"reveal": "always",
"focus": false,
"panel": "shared",
"showReuseMessage": true,
"clear": false
}
},
{
"type": "shell",
"label": "C++: Smart Build (Release)",
"command": "powershell.exe",
"args": [
"-ExecutionPolicy",
"Bypass",
"-File",
"${workspaceFolder}\\.vscode\\smartbuild.ps1",
"-SourceFile",
"${file}",
"-WorkspaceFolder",
"${workspaceFolder}",
"-BuildType",
"release"
],
"options": {
"cwd": "${workspaceFolder}"
},
"problemMatcher": ["$gcc", "$msCompile"],
"group": "build",
"detail": "Build optimized release version with auto-detected compiler"
},
{
"type": "cppbuild",
"label": "C++: Build with g++ (Debug)",
"command": "g++",
"args": [
"-std=c++17",
"-Wall",
"-Wextra",
"-g",
"-O0",
"${file}",
"-o",
"${workspaceFolder}\\build\\debug\\${fileBasenameNoExtension}.exe"
],
"options": {
"cwd": "${workspaceFolder}"
},
"problemMatcher": ["$gcc"],
"group": "build",
"detail": "Build current file with g++ in debug mode",
"presentation": {
"echo": true,
"reveal": "always",
"focus": false,
"panel": "shared",
"showReuseMessage": true,
"clear": false
}
},
{
"type": "cppbuild",
"label": "C++: Build with g++ (Release)",
"command": "C:\\msys64\\ucrt64\\bin\\g++.exe",
"args": [
"-std=c++17",
"-Wall",
"-Wextra",
"-O2",
"-DNDEBUG",
"${file}",
"-o",
"${workspaceFolder}\\build\\release\\${fileBasenameNoExtension}.exe"
],
"options": {
"cwd": "${workspaceFolder}"
},
"problemMatcher": ["$gcc"],
"group": "build",
"detail": "Build current file with g++ in release mode"
},
{
"type": "cppbuild",
"label": "C++: Build with g++ (MSYS2 Full Path)",
"command": "C:\\msys64\\ucrt64\\bin\\g++.exe",
"args": [
"-std=c++17",
"-Wall",
"-Wextra",
"-g",
"-O0",
"${file}",
"-o",
"${workspaceFolder}\\build\\debug\\${fileBasenameNoExtension}.exe"
],
"options": {
"cwd": "${workspaceFolder}"
},
"problemMatcher": ["$gcc"],
"group": "build",
"detail": "Build current file with g++ using explicit MSYS2 path (backup option)"
},
{
"type": "shell",
"label": "C++: Build with MSVC (Debug)",
"command": "powershell.exe",
"args": [
"-Command",
"& { $buildDir = '${workspaceFolder}\\build\\debug'; if (-not (Test-Path $buildDir)) { New-Item -ItemType Directory -Path $buildDir -Force }; & cmd /c '\"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\Common7\\Tools\\VsDevCmd.bat\" && cd /d \"$buildDir\" && cl.exe /std:c++17 /W4 /Zi /EHsc /MDd /Fe:\"${workspaceFolder}\\build\\debug\\${fileBasenameNoExtension}.exe\" /Fo:\"$buildDir\\${fileBasenameNoExtension}.obj\" /Fd:\"$buildDir\\${fileBasenameNoExtension}.pdb\" \"${file}\"' }"
],
"options": {
"cwd": "${workspaceFolder}"
},
"problemMatcher": ["$msCompile"],
"group": "build",
"detail": "Build current file with MSVC in debug mode (clean intermediate files)"
},
{
"type": "shell",
"label": "C++: Run current file",
"command": "\"${workspaceFolder}\\build\\debug\\${fileBasenameNoExtension}.exe\"",
"args": [],
"options": {
"cwd": "${workspaceFolder}"
},
"group": {
"kind": "test",
"isDefault": true
},
"presentation": {
"echo": true,
"reveal": "always",
"focus": true,
"panel": "new"
},
"dependsOn": "C++: Smart Build (Auto-detect Compiler)",
"detail": "Build and run the current C++ file"
},
{
"type": "shell",
"label": "C++: Clean build directory",
"command": "powershell.exe",
"args": [
"-Command",
"if (Test-Path \"${workspaceFolder}\\build\") { Remove-Item -Recurse -Force \"${workspaceFolder}\\build\\*\" } else { New-Item -ItemType Directory -Path \"${workspaceFolder}\\build\\debug\", \"${workspaceFolder}\\build\\release\" -Force }"
],
"options": {
"cwd": "${workspaceFolder}"
},
"group": "build",
"detail": "Clean all build artifacts and recreate build directories"
},
{
"type": "shell",
"label": "C++: Setup build directories",
"command": "powershell.exe",
"args": [
"-Command",
"New-Item -ItemType Directory -Path \"${workspaceFolder}\\build\\debug\", \"${workspaceFolder}\\build\\release\" -Force"
],
"options": {
"cwd": "${workspaceFolder}"
},
"group": "build",
"detail": "Create build directories if they don't exist"
}
]
}