Interesting. As I peel away the onion for launch and challenge assumptions, I realized that I’m forgetting about debugger options. GDB would have different options than LLDB and Windows cdb. If you do things properly, these should actually be different
launch configuration types. We really cheated by supporting multiple debuggers in the same one.
At the very least, a different way of thinking of things. We’ve done a lot of work to keep the number of launch config types down to a minimum. I wonder if we’ve just made things more complicated.
Anyway, just an example of my thought process lately. Peel away the onion and see if it comes back together in the same shape :).
Doug.
I can contribute this to CDT if this helps.
I’m not sure. That’s why I want to do the Qt ones from scratch so I can play with a couple of ideas first. I don’t want to generalize until I’m sure there are things that are common that we don’t already have. With build I peeled away the onion and threw
out many current assumptions to end up with something simpler. I have a feeling I’m going to have to do that with launch as well.
Regarding project vs multi-binaries the idea is that IDE is smart enough to figure this out. Items in the drop down of launch bar they are not binaries
they are "entry points", so project with multiple binaries can have a single entry point (i.e. when there are multiple binaries but they only different by architecture), or it maybe possible
to have one binary and many entry points (for example different start modes of mobile app). Or entry for each different binary as in cmake example.
Really depends on provider that creates these launch descriptors.
Entry point isn’t a well known term in C/C++ land, other than the _start symbol on most posix-like systems. In CMake, they are called executables. The command in the CMakeLists.txt file is add_executable(). In qmake, it’s called app (TEMPLATE = app). At
the end of the day we need to create Launch Descriptors to represent these things. The Qt ones can be calculated from the project. CMake will likely need it’s own launch object since there can be multiple per project. Again, I’m not sure there’s a general
concept here that launch objects and launch delegates don’t already cover.