mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-12-13 09:50:36 +00:00
65 lines
3.7 KiB
Markdown
65 lines
3.7 KiB
Markdown
## CLion Project Configuration
|
|
|
|
CLion can integrate with CMake to provide code comprehension features.
|
|
|
|
After opening the `serenity` repository in CLion as a new project, the "`Open Project Wizard`" window will open, from here set the following fields:
|
|
|
|
(Assuming you use `Ninja` as the build system and configured the CMake build directory to `Build/i686`)
|
|
|
|
`Build type`: `Default`
|
|
|
|
> _CMake will complain with any other build type, make sure to use `Default` so that `CMAKE_BUILD_TYPE` is empty in the `Build/i686/CMakeCache.txt` file._
|
|
|
|
`CMake Options`: `-G Ninja -DBUILD_LAGOM=ON -DCMAKE_C_COMPILER=gcc-10 -DCMAKE_CXX_COMPILER=g++-10`
|
|
|
|
> The `gcc-10` and `g++-10` are not special-meaning strings, they're paths to your GCC compiler executables, and should be findable through `PATH`. It is entirely possible you might have to instead use something like `-DCMAKE_C_COMPILER=/opt/homebrew/bin/gcc-11 -DCMAKE_CXX_COMPILER=/opt/homebrew/bin/g++-11` instead of the above.
|
|
|
|
`Build Directory`: `Build/i686`
|
|
|
|
> _If you have not built the Toolchain at this point, please do so: `./Toolchain/BuildIt.sh`_
|
|
|
|
If you already have the project open, you can go to `File -> Settings -> Build, Execution, Deployment -> CMake` to find these options.
|
|
|
|
Remember to recreate the CMake cache after changing any of the options.
|
|
|
|
## Excluding Build Artifacts
|
|
|
|
Source files are copied to the `Build` directory during the build, if you do not exclude them from CLion indexing they will show up
|
|
in search results. This is often confusing, unintuitive, and can result in you losing changes you have made to files. To exclude
|
|
these files navigate to the `Project` tool window, right-click the `Build` folder and select `Mark Directory as | Excluded`. If you
|
|
want exclude Toolchain files as well, follow the same procedure with the following paths:
|
|
- `Toolchain/Local`
|
|
- `Toolchain/Tarballs`
|
|
- `Toolchain/Build`
|
|
|
|
## Code Generation Settings
|
|
|
|
To make code generated by CLion (e.g. identifier names, const placement) match the SerenityOS coding style, change the
|
|
following options under `Settings -> Editor -> Code Style -> C/C++`:
|
|
|
|
- On the `Code Generation` tab set `const/volatile qualifier placement` to `int const x = 0`
|
|
- On the `Naming Convention` tab, select the following:
|
|
|
|
![Screenshot of Naming Convention settings](./CLion_Naming_Convention.png)
|
|
|
|
## Notes for WSL Users
|
|
|
|
It is possible to set the embedded terminal in CLion to the one that your WSL distribution provides.
|
|
This way you can build and run serenity without leaving the IDE.
|
|
Note that following will only help if you don't use an X-window server to access qemu.
|
|
It is possible to install qemu natively on Windows and allow WSL to use it instead of installing qemu first on (wsl) linux and then use X server to launch serenity inside of it.
|
|
Check the updated manual [here](BuildInstructionsWindows.md).
|
|
|
|
- Locate the terminal emulator for your linux distribution.
|
|
Open CMD with elevated privileges and cd to `C:/Program Files/WindowsApps/`.
|
|
The directory is usually hidden and requires additional privileges. You should be able to cd as administrator.
|
|
`dir` and look for your distribution in directory names. In case of Ubuntu, it starts with `CanonicalGroupLimited.Ubuntu20.04onWindows_2004.2020.424.0_x64`.
|
|
cd to it. The directory should contain the shell executable. In my case it's named `ubuntu2004.exe`.
|
|
Copy `absolute/path/to/ubuntu2004.exe`.
|
|
|
|
- Go to your IDE settings: `File->Settings->Tools->Terminal` and paste the path you just copied to `shell path`. Click OK.
|
|
|
|
- Close CLion and restart.
|
|
|
|
The default IDE terminal should now be changed to WSL, and now you can run `CLion/run.sh`.
|
|
You may also want to copy `serenity/Meta/CLion/run.sh` to your project directory and run it from there, so that you don't have to fight with git every time you modify the script.
|