feat: Add C++ modules support and update nlohmann::json#1530
feat: Add C++ modules support and update nlohmann::json#1530mikomikotaishi wants to merge 4 commits intobrainboxdotcc:devfrom
Conversation
✅ Deploy Preview for dpp-dev ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
e91eaa8 to
121eb9b
Compare
Mishura4
left a comment
There was a problem hiding this comment.
Thanks for the PR! Good stuff. Just gonna prefer the approach with including dpp.h in the module for maintainability, as discussed in https://discord.com/channels/825407338755653642/825411104208977952/1454456223952011427
braindigitalis
left a comment
There was a problem hiding this comment.
some module related unit tests would be good. not repeating a thousand lines of code in dpp.cppm is an absolute must, as @Mishura4 also said.
|
I've looked at the |
|
I think that in this case you might want to make a new .cpp under the unittests folder which imports dpp instead of #including it. it can have some test functions that are exported and called via standard approaches from the main unittest file. |
1909f3f to
7f6fb23
Compare
|
I think this should fix the errors we're encountering. It's with the build system configuration |
|
you cant just do -DDPP_MODULES=ON for the entire CI matrix. Some CI's use older g++ (which we support) and some use C++17. |
|
Then is it possible to disable the modules unit tests for C++17 CI tests? |
|
@braindigitalis I think the modules CI should just be in a totally separate CI. It requires Ninja, as CMake can't build modules with Makefiles. |
|
unit tests only run in one g++, which is g++-12. This is the one which is packaged. we cant and dont run unit tests on them all, as the unit tests connect to discord and we cant do this concurrently. |
|
Updated Title to match code standards |
|
Since you're having issues with g++-14 (which makes no sense because I can build g++-14 modules fine locally), just use a clang version that's supported (pretty sure clang15 has modules, but use clang18). Make sure you set the CXX for the env on both builds and then the apt install too 🫡 |
|
I have no idea why this current error is happening seeing as it never happened on my end, though I built mine in Clang 21. |
|
Seems it's a clang18 issue 🙃 , change to clang20 |
b3a12cd to
c241af2
Compare
library/CMakeLists.txt
Outdated
| endif() | ||
| if(BUILD_SHARED_LIBS) | ||
| if (DPP_MODULES) | ||
| target_link_libraries(${testname} PUBLIC dpp_module) |
There was a problem hiding this comment.
Can't we set it up so that target_link_libraries(${testname} PUBLIC dpp) brings the module, as discussed on the discord?
There was a problem hiding this comment.
I think my current revision fixes this, but please review and let me know if it is acceptable.
|
Im rather confused why the CI keeps saying |
This pull request adds support for C++20 modules.
In order to accomplish this, some constants were changed to using external linkage. I have also updated nlohmann/json to version 3.12.0, as the older version declares some symbols as internal.
Code change checklist