On 11/23/2016 08:45 AM, Konstantin Tokarev wrote:
23.11.2016, 08:51, "Jason A. Donenfeld" <[email protected]>:
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.

Could you provide a report for this with a minimal example?

Nikolai

_______________________________________________
WireGuard mailing list
[email protected]
https://lists.zx2c4.com/mailman/listinfo/wireguard

Reply via email to