Maybe its a good idea to explain why the KDev4 QMake Manager will support all these undocumented features, before announcing that it does so? Well to late for the “before” thing, but nevertheless here are my plans:
- Support for reading and understanding of most of QMake’s features, this includes but is not limited to: the undocumented features listed on the site I posted in the previous blog, support for self-defined functions via newTestFunction and Co, support for self-defined features.
- Provide a simple GUI to change some of QMake’s variables to support simple projects. This will be limited to adding/removing files and dirs, changing the template and possibly the target and adding/removing libraries and include dirs
- Provide a language support part for the QMake scripting language to help people write advanced QMake project files.
The reasoning for 2 is 3 and vice versa. The work on KDevelop3’s QMake Manager clearly showed one fact: Buildsystems such as QMake, CMake or autotools are just too complex to provide a GUI that covers each and every aspect. In particular writing the buildsystem files back to disk without interfering with existing formatting and content is close to impossible.
So I decided (well inspired by talks with Matt Rogers who is working on CMake support AFAIK in the same direction), that I’d rather help people write complicated QMake project files with things like extended syntax highlighting, “code completion” (yes I’m aiming to have a list of possible functions to use and include argument hints for those) and also code navigation and refactoring (as far as support for that gets into kdevelop/kdevplatform). For the beginner users there will still be some GUI (not sure how that will look, don’t have any mockups yet), so they can easily setup some simple projects, including build libraries and having subdirs as well as linking to external libraries. I think most of the things from the first 3 or 4 tabs in the existing QMake manager will be supported in a GUI.
So thats it for my plans so far, comments welcome of course :)