[Qt-creator] Qt Creator for Linux Kernel Development
Konstantin Tokarev
annulen at yandex.ru
Wed Nov 23 08:45:20 CET 2016
23.11.2016, 08:51, "Jason A. Donenfeld" <jason at zx2c4.com>:
> Hello Eike & Qt Creator mailing list,
>
> I'm insane and decided to try using an IDE for Linux kernel
> development. Much to my delight, it actually works well. (Everybody on
> the mailing list to which this message is cross-posted just vomited a
> little bit in their mouth and swallowed, but fear not: I'm a competent
> VIM user too. It's just that sometimes clickity clicking around Qt
> Creator is buttery nice. Here's a screenshot [2].)
>
> I'm working on a small kernel module [1], and for it I made a very
> minimal .pro file to import its files into Qt Creator. I even hooked
> the build/run commands up to my qemu testing rig. Seems to work pretty
> well. Here's the .pro I use:
>
> CONFIG -= qt
> INCLUDEPATH = /usr/src/linux/arch/x86/include
> /usr/src/linux/arch/x86/include/generated/uapi /usr/src/linux/
> arch/x86/include/generated /usr/src/linux/include
> /usr/src/linux/arch/x86/include/uapi /usr/src/linux/arch/x
> 86/include/generated/uapi /usr/src/linux/include/uapi
> /usr/src/linux/include/generated/uapi
> DEFINES = __KERNEL__ DEBUG MODULE
> SOURCES = $$system(find -L . -type f -iname $$system_quote(*.c) -and
> -not -path $$system_quote(./tests/*)) $
> $system(find -L . -type f -iname $$system_quote(*.S) -and -not -path
> $$system_quote(./tests/*))
> HEADERS = $$system(find -L . -type f -iname $$system_quote(*.h) -and
> -not -path $$system_quote(./tests/*))
>
> As you can see, it's a real hack.
>
> I also do development on the main Linux kernel tree, and similarly for
> that, I have a .pro file that works well:
>
> CONFIG -= qt
> INCLUDEPATH = $$system(find -L include/ -type d)
> SOURCES = $$system(find -L . -type f -iname \'*.c\')
> HEADERS = $$system(find -L . -type f -iname \'*.h\')
> INCLUDEPATH = include/ arch/x86/include
>
> Download the linux sources, put that in the tree, and load it up in Qt
> Creator. It works. Amazing!
>
> But don't get too excited. Unfortunately, there are two issues that
> make things unbearable:
>
> (A) Qt Creator doesn't seem to parse the C correctly. Things like
> designated initializers and a few other C features here and there just
> don't get parsed correctly, and the IDE stops being useful. I suspect
> this is because things are actually being parsed in C++ mode. Bummer.
> Developers: any interest in improving C support in Qt Creator?
>
> (B) There is no way to tell Qt Creator that a particular header file
> is included in every file -- that is, that gcc's "-include" is in use.
> There is a way of messing with the "C++ Code Model" on a file-by-file
> basis, for the duration of the time that the file is open, but no way
> to automatically have it included in every file of the project. This
> is a major hindrance. It means that every ifdef for every kconfig
> option is a grayed out unclickable region, rendering most things
> useless.
BTW, I'm facing similar issue with QtWebKit: config.h is included into all
source files, but never in headers, so all #if's in headers are disabled
and code model does not function properly.
> Developers: any interest in fixing this? I spoke to a few of
> you in IRC several months ago about this, and there was interest, but
> it seems to have evaporated.
>
> So, anyway, if you think it would be cool to be able to say, "Qt
> Creator is used for Linux Kernel Development!", then maybe we can work
> together to actually get things working properly. It's already 85%
> there, and the remaining chunk seems well within reach.
>
> Not only that, but if Qt Creator becomes generally usable for ordinary
> C projects, it would most likely become a regular tool during my
> professional activities, namely, auditing large code bases for
> vulnerabilities and improving the security of systems.
>
> Let me know if you are interested in assisting with this.
>
> Thanks,
> Jason
>
> [1] https://www.wireguard.io/
> [2] https://data.zx2c4.com/qt-creator-wireguard-development.png
> _______________________________________________
> Qt-creator mailing list
> Qt-creator at qt-project.org
> http://lists.qt-project.org/mailman/listinfo/qt-creator
--
Regards,
Konstantin
More information about the WireGuard
mailing list