First, make sure you have a working toolchain and can build and run SerenityOS. Go here for instructions for setting that up.
File -> New File or Project...
Import Existing Project
serenity
), and navigate to the root of your SerenityOS project checkout. Click Next.Add to version control
to <None>
. Click Finish.Meta/refresh-serenity-qtcreator.sh
script to regenerate the serenity.files
file. You will also have to do this every time you delete or add a new file to the project.serenity.config
file (In Qt Creator, hit ^K or CMD+K on a Mac to open the search dialog, type the name of the file and hit return to open it)#define
s to the file: SANITIZE_PTRS
, and KERNEL
. Depending on what you are working on, you need to have that last define commented out. If you're planning on working in the userland, comment out #define KERNEL
. If you're working on the Kernel, then uncomment #define KERNEL
.serenity.cxxflags
file to say -std=c++2a -m32
Edit the serenity.includes
file, add the following lines:
.
..
../..
Userland/Services/
Userland/Libraries/
Userland/Libraries/LibC/
Userland/Libraries/LibM/
Userland/Libraries/LibPthread/
Userland/Libraries/LibSystem/
Toolchain/Local/i686/i686-pc-serenity/include/c++/10.2.0
Build/
Build/Userland/
Build/Userland/Services/
Build/Userland/Libraries/
AK/
Finally, search in the options for "BOM" (Text Editor > Behavior > File Encodings > UTF-8 BOM), and switch to "Always delete".
Qt Creator should be set up correctly now, go ahead and explore the project and try making changes. Have fun! :^)
You can use clang-format
to help you with the style guide. Before you proceed, check that you're actually using clang-format version 11, as some OSes still ship clang-format version 9 or 10 by default.
Beautifier (experimental)
row (for example, by typing beau
into the search).clang-format
into the "value" box, and click "OK"Note that not the entire project is clang-format-clean (yet), so sometimes you will see large diffs. Use your own judgement whether you want to include such changes. Generally speaking, if it's a few lines then it's a good idea; if it's the entire file then maybe there's a better way to do it, like doing a separate commit, or just ignoring the clang-format changes.
You may want to read up what git add -p
does (or git checkout -p
, to undo).
QtCreator tends to interpret IPC definitions as C++ headers, and then tries to format them. This is not useful. One way to avoid that is telling QtCreator that IPC definitions are not C++ headers.
*.txt;*.asc;*,v
. Extend it in the following way: *.txt;*.asc;*,v;*.ipc;*.gml
MIME type: text/plain
.You may have noticed how Andreas just types lic
and the license appears.
In order to so, create a new file anywhere, for example license-template.creator
, with the standard license:
/*
* Copyright (c) 2021, the SerenityOS developers.
*
* SPDX-License-Identifier: BSD-2-Clause
*/
In QtCreator, select the menu "Tools", item "Options", section "C++", tab
"File Naming" (don't ask me why it's here). At the bottom there should be the
option "License template:". Click "Browse…", select your file (i.e.,
license-template.creator
). Click "OK", and you're done! :)
You can slightly improve how well Qt interprets the code by adding and setting up an appropriate "compiler kit".
For that you will need to reference the compilers at Toolchain/Local/i686/bin/i686-pc-serenity-gcc
and Toolchain/Local/i686/bin/i686-pc-serenity-g++
.