Hello, community!
I want to create some funny fork of rack. I able to write c++ code, but i have never worked with pure make build system. I can write code in the visual studio code or similar text redactor of course, but i am looking for a good full-featured IDE with debuging and supporting make files
My question is: “What IDE are you use for this project?”
Are you use only make files in official repository, or you create you own “project file” for you favorite IDE?
I use VS community, debug in gdb MSYS2 not truly debugging more error finding. Find community much easier to use rather than VSCode. There is a way to get gdb natively in VS Community but I’m far to lazy to try to figure it out. Community has the advantage to add filters rather a folder plus adding entire solutions rather than making a new one is very nice and allows you to reference different builds easily. Code probably has filters not sure, far too lazy…
Thanks for your answer!
well… Button “start debug” is not working in your enviroment?
No you need to add cygwin and integrate gdb VS doesn’t support it natively.
I was setting up Visual Studio Code in the last view days. I got everything working so far, debugging is definitively useable. If you need any hints how to set it up just let me know.
Builds with CTRL+Shift+B using default Makefiles, debugs with F5.
Mine’s a little odd. Use Visual Studio Community for everything that’s not rack related. Huge unit test suite that tests all the non-ui stuff runs in there. Debug that with Visual Studio debugger. Then wrap in in a VCV plugin wrapper, and do all that with standard makefiles. Do very little debugging in the full VCV environment - printf and a little gdb. works for me. do most editing in VS Code.
Thanks for your answers!
Firstly i’m intresting about Rack itself development (not a module development).
VS solutions is ok, but i went through this forum and discovered that Andrew Belt does not use the VS solutions.
So, @Vortico ,can you explain, what instruments are you use? (of course if it’s not a secret )
Hi,
you can try what is posted here - Build VCVRack with Conan and CMake + add CI
This works with CMake. Just follow the instructions and, if needed, get familiar with the used tools. It looks like there is a lot to setup, but if everything is setup, it is rather very easy to use and work with.
IDE’s that you can work with out of the box are QT Creator or Clion.
For using Clion you would have to create the CMake project under Windows like this cmake -G "CodeBlocks - MinGW Makefiles" -DCMAKE_BUILD_TYPE=Release ..\Rack
Just create a project in the IDE and point to the generated project (build folder).
You can also create already an Visual Studio Solution, but you won’t be able to compile Rack completely, as it is not “MSVC compatible”. And Visual Studio must be installed on your machine!
To do this, create a CMake project like this (adapt it to your VS version if needed):
- create a build directory and cd into it
- Execute
conan install ../Rack
- Execute
cmake -G "Visual Studio 15 Win64" ../Rack
Then open the created Solution in your VS, thats it.
I mostly work on Arch Linux for cross-platform stuff (e.g. DSP code). I usually don’t write bugs that require debuggers to figure out—they’re usually obvious mistakes. But if I do, I use print debugging, GDB, and Valgrind, in order of frequency. I use Sublime Text 3dev for my text editor with dozens of plugins, but I don’t debug in it. GDB is more powerful/faster than IDE debuggers anyway.
I work exclusively in Ubuntu at the moment; and I use a text editor rather than an ide. I can’t really recommend that, but I’m a bit of a stick in the mud.
I end up using Emacs as my IDE. It integrates GDB with source stepping, it has a compile command that lets you step through errors and warnings.
Since I’ve been using Emacs for over 30 years, so I can’t really say I know what the learning curve is at this point. But if you don’t have a favorite text editor, it’s worth giving it a shot. There is no editor that’s deeper or does more for you.
I especially like that once you learn it, you can do whatever you want from the computer keyboard. There’s no switching from the keyboard to the mouse.
It’s like learning a new DAW (or software modular) : You have to commit to it, and get past initial frustration to reap the rewards that a well designed program will give you.
I hate emacs and vim and will never use them
CLion can also use a “compilation database” that describes the project files. That’s what I use to develop my plugin on Mac.
My Makefile builds the compilation database for me. See lines 63–90: https://github.com/dhemery/DHE-Modules/blob/f28308ba2f346ee62f468dc7ba91295ac99c03c1/Makefile#L63-L90
That procedure uses clang’s -MJ
compiler flag followed by sed
. I can’t say how that might be different for building Rack on Windows.
You can do also this with CMake then - just add -DCMAKE_EXPORT_COMPILE_COMMANDS
to the cmake call.
But it is interesting to see the invented workarounds people came up with here.
I love emacs. But like @chaircrusher I have been using it since before the wheel and so would not necessarily recommend it
Otherwise my workflow matches yours (print then gdb then vslgend linux) just with Mac or Ubuntu in a vm rather than arch. Oh and the macos sampling profiler is super duper useful. And I think the fact that rack just uses regular make is one of the several super pragmatic and effective decisions you made.
But more importantly I have never met an effective dev who didn’t have a strong opinion on her or his editing/debugging tools. And I’ve never understood why good dev a tries to get good dev b to switch. It’s about the most personal thing there is right?
So my core advice to original poster is pick something - probably doesn’t matter what - and invest in learning it. If it can run a script it can call make to build. Then automate or script everything you do more than 3 times.
Oh yeah, I forgot to mention tools for profiling. I use perf and hotspot on Linux and Apple Instruments on Mac.
My reason for disliking emacs and vim is that although every developer says they’re a bazillion times faster than anything else, I have never seen a developer (and I’ve even searched for “speed users” of vim/emacs on Youtube in hope of being inspired) match the speed I can do things with my personal setup of Sublime Text + ~50 plugins.
I’m surrounded by Sublime Text users at work. I don’t begrudge anyone their tools.
By the way, true story: Ableton flew me to Berlin to interview, and I didn’t get the job because I blew the technical interview, because they made me debug something in Visual Studio, and I hadn’t used it for nearly a decade, and found it nearly impossible to do what I needed to do under pressure.
Being able to use the tools you’re most comfortable with is what makes a person productive.
Many fellow students also used that before, but mostly everyone switched to Atom now, It’s a really good editor, customizable in every way imaginable, you can even link it with a Git !
Hi Ben. I am looking info for using VScode to develop VCV racks. Could you share the info ???
launch.json
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) Launch",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/../../Rack.exe",
"args": ["-d"],
"stopAtEntry": false,
"cwd": "${workspaceFolder}/../../",
"environment": [],
"externalConsole": true,
"MIMode": "gdb",
"miDebuggerPath": "C:/Dev/msys64/mingw64/bin/gdb.exe",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": false
}
]
}
]
}
tasks.json
{
"version": "2.0.0",
"tasks": [
{
"label": "Builds application",
"type": "shell",
"command": "make",
"windows": {
"command": "make"
},
"options": {
"cwd": "${workspaceRoot}",
"env": {
"PATH": "C:\\Dev\\msys64\\usr\\bin;C:\\Dev\\msys64\\mingw64\\bin"
}
},
"group": {
"kind": "build",
"isDefault": true
},
"presentation": {
"echo": true,
"reveal": "always",
"focus": false,
"panel": "shared"
},
"args": [
"-j4"
],
"problemMatcher": {
"owner": "cpp",
"fileLocation": [
"absolute"
],
"pattern": {
"regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",
"file": 1,
"line": 2,
"column": 3,
"severity": 4,
"message": 5
}
}
}
]
}