mirror of
https://github.com/RGBCube/serenity
synced 2025-07-27 00:47:45 +00:00
Meta: Add instructions on using Lagom in an external project
This commit is contained in:
parent
b28e861776
commit
2f646f4284
1 changed files with 26 additions and 0 deletions
|
@ -130,3 +130,29 @@ You may run into annoying issues with the stacktrace:
|
||||||
|
|
||||||
That means it couldn't find the executable `llvm-symbolizer`, which could be in your OS's package `llvm`.
|
That means it couldn't find the executable `llvm-symbolizer`, which could be in your OS's package `llvm`.
|
||||||
`llvm-symbolizer-11` will [not be recognized](https://stackoverflow.com/a/42845444/).
|
`llvm-symbolizer-11` will [not be recognized](https://stackoverflow.com/a/42845444/).
|
||||||
|
|
||||||
|
## Using Lagom in an External Project
|
||||||
|
It is possible to use Lagom for your own projects outside of Serenity too!
|
||||||
|
|
||||||
|
An example of this in use can be found [on Linus' LibJS test262 runner](https://github.com/linusg/libjs-test262).
|
||||||
|
|
||||||
|
To implement this yourself:
|
||||||
|
- Download a copy of [linusg/libjs-test262/cmake/FetchLagom.cmake](https://github.com/linusg/libjs-test262/blob/7832c333c1504eecf1c5f9e4247aa6b34a52a3be/cmake/FetchLagom.cmake) and place it wherever you wish
|
||||||
|
- In your root `CMakeLists.txt`, add the following commands:
|
||||||
|
```cmake
|
||||||
|
include(FetchContent)
|
||||||
|
include(cmake/FetchLagom.cmake) # If you've placed the file downloaded above differently, be sure to reflect that in this command :^)
|
||||||
|
```
|
||||||
|
- In addition, you will need to also add some compile options that Serenity uses to ensure no warnings or errors:
|
||||||
|
```cmake
|
||||||
|
add_compile_options(-Wno-literal-suffix) # AK::StringView defines operator"" sv, which GCC complains does not have an underscore.
|
||||||
|
add_compile_options(-fno-gnu-keywords) # JS::Value has a method named typeof, which also happens to be a GNU keyword.
|
||||||
|
```
|
||||||
|
|
||||||
|
Now, you can link against Lagom libraries.
|
||||||
|
|
||||||
|
Things to keep in mind:
|
||||||
|
- You should prefer to use a library's `Lagom::` alias when linking
|
||||||
|
- Example: `Lagom::Core` vs `LibCore`
|
||||||
|
- If you still _need_ to use the standard library, you may have to compile with the `AK_DONT_REPLACE_STD` macro.
|
||||||
|
- Serenity defines its own `move` and `forward` functions inside of `AK/StdLibExtras.h` that will clash with the standard library's definitions. This macro will make Serenity use the standard library's `move` and `forward` instead.
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue