For debugging the Pony compiler on Windows I use the following configuration files in the .vscode
directory of my cloned ponyc git repo.
I also use the Pony Syntax Colorizer for syntax highlighting in Pony programs.
Updated: updated tasks.json
for more recent VSCode versions.
c_cpp_properties.json:
{ "configurations": [ { "name": "Win32", "includePath": [ "${workspaceRoot}/build/debug-llvm-3.9.1/ThirdParty/lib/LLVM-3.9.1-Debug/include", "C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.11.25503/include", "C:/Program Files (x86)/Windows Kits/10/Include/10.0.16299.0/shared", "C:/Program Files (x86)/Windows Kits/10/Include/10.0.16299.0/ucrt", "C:/Program Files (x86)/Windows Kits/10/Include/10.0.16299.0/um", "${workspaceRoot}/src/common", "${workspaceRoot}/src/libponyrt" ], "defines": [ "PONY_VERSION=\"0.20.0\"", "LLVM_VERSION=\"3.9.1\"", "PONY_COMPILER=\"msvc\"", "PONY_BUILD_CONFIG=\"debug\"", "PONY_LLVM=391", "DEBUG", "_DEBUG", "_MSC_VER=1900", "UNICODE" ], "browse": { "limitSymbolsToIncludedHeaders": true, "databaseFilename": "C:/Users/Gordon/Dev/pony/ponyc/.vscode/browse/.browse.VC.db", "path": [ "${workspaceRoot}/build/debug-llvm-3.9.1/ThirdParty/lib/LLVM-3.9.1-Debug/include", "C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.11.25503/include", "C:/Program Files (x86)/Windows Kits/10/Include/10.0.16299.0/shared", "C:/Program Files (x86)/Windows Kits/10/Include/10.0.16299.0/ucrt", "C:/Program Files (x86)/Windows Kits/10/Include/10.0.16299.0/um", "${workspaceRoot}/src" ] }, "intelliSenseMode": "msvc-x64" } ], "version": 3 } |
Obviously the version numbers and directory names for LLVM, Visual Studio and Windows SDK will need to be updated for your particular installation.
launch.json
{ "version": "0.2.0", "configurations": [ { "name": "Launch Ponyc", "type": "cppvsdbg", "request": "launch", "program": "${workspaceRoot}/build/debug-llvm-3.9.1/ponyc.exe", "args": [ ], "stopAtEntry": false, "cwd": "${workspaceRoot}", "environment": [ { "name": "PONYPATH", "value": "" } ], "externalConsole": false }, { "name": "Attach to Process", "type": "cppvsdbg", "request": "attach", "processId": "${command:pickProcess}" } ] } |
This provides two launch tasks, one for the Pony compiler, and one for attaching to a running program.
tasks.json
{ "version": "2.0.0", "tasks": [ { "label": "distclean", "command": "${workspaceRoot}/make.bat", "args": [ "distclean" ], "type": "shell", "group": "none", "problemMatcher": [] }, { "label": "configure", "command": "${workspaceRoot}/make.bat", "args": [ "configure" ], "type": "shell", "group": "none", "problemMatcher": [] }, { "label": "clean", "command": "${workspaceRoot}/make.bat", "args": [ "clean", "--config=debug" ], "type": "shell", "group": "none", "problemMatcher": [] }, { "label": "build", "command": "${workspaceRoot}/make.bat", "args": [ "build", "--config=debug" ], "type": "shell", "group": { "kind": "build", "isDefault": true }, "problemMatcher": "$msCompile" }, { "label": "test", "command": "${workspaceRoot}/make.bat", "args": [ "build", "test", "--config=debug" ], "type": "shell", "group": { "kind": "test", "isDefault": true }, "problemMatcher": "$msCompile" } ] } |
This will provide tasks for building and testing ponyc in debug mode.
settings.json
{ "files.associations": { "*.h": "cpp", "*.c": "cpp" } } |
Windows builds must use C++ for all source files.