-
-
Notifications
You must be signed in to change notification settings - Fork 166
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Package manager support #335
Comments
I added DPP to xmake repository (see xmake-io/xmake-repo#1222), with my changes it compiles fine on Windows, MinGW, Linux, macOS in both dynamic and static linking. Since xmake is able to handle dependencies (will find libraries on the machine like cmake but is able to download and compile them if it doesn't find them), I managed to build the lib using a very short xmake.lua. Usually, xmake packages use CMake to build CMake libraries, but the way dependencies are handled on DPP doesn't help much (mostly because they are embedded). Which is why I patched nlohmann/fmt out of the lib. I also fixed the export.h header which made static linking impossible on Windows, here's the diff: diff --git a/include/dpp/export.h b/include/dpp/export.h
index b7b35b5..838f79d 100644
--- a/include/dpp/export.h
+++ b/include/dpp/export.h
@@ -24,25 +24,29 @@
// Investigate: MSVC doesn't like this
//static_assert(__cplusplus >= 201703L, "D++ Requires a C++17 compatible compiler. Please ensure that you have enabled C++17 in your compiler flags.");
-#ifdef DPP_BUILD
+#ifndef DPP_STATIC
- #ifdef _WIN32
- #include <dpp/win32_safe_warnings.h>
- #endif
+ #ifdef DPP_BUILD
+
+ #ifdef _WIN32
+ #include <dpp/win32_safe_warnings.h>
+ #endif
- #ifdef _WIN32
- #define DPP_EXPORT __declspec(dllexport)
+ #ifdef _WIN32
+ #define DPP_EXPORT __declspec(dllexport)
+ #else
+ #define DPP_EXPORT
+ #endif
#else
- #define DPP_EXPORT
+ #ifdef _WIN32
+ #define DPP_EXPORT __declspec(dllimport)
+ #else
+ #define DPP_EXPORT
+ #endif
#endif
+
#else
- #ifdef _WIN32
- #define DPP_EXPORT __declspec(dllimport)
- /* This is required otherwise fmt::format requires additional file linkage to your project */
- #define FMT_HEADER_ONLY
- #else
- #define DPP_EXPORT
- #endif
+ #define DPP_EXPORT
#endif
#ifndef _WIN32 |
nlohmann and fmt are header only. it would be nicer if they weren't patched out, because we test with specific versions and not just whatever the latest is which could cause support issues |
xmake can be instructed to use a specific version of nlohmann/fmt. Since these libraries are very well tested, I think it would be better to not embed them to prevent such issues. |
with this diff applied does dpp still build ok outside of xmake? |
Yes, but DPP_STATIC should be handled in the cmakelists.
It makes little sense to build the lib without FMT_HEADER_ONLY and use it with user code, the reason it was failing was because |
I see, I will consider moving dpp's copies to a namespace to prevent conflicts. |
thanks! can you please submit a pr of this diff against dev branch and I'll merge it in... |
Unfortunately this won't be enough, because of preprocessor defines (libs header guards), there's no proper way to embed fmt/nlohmann in a project headers.
Someone else is working on this already, all my changes will only be applied when installing dpp through xmake. If you wish to keep using CMake, xrepo-cmake may help you to handle dependencies in a better way. |
Vcpkg support would be quite nice, is it coming anytime soon? |
there's an open pr over there, ive not had time to work on it though... |
there is now a finalized pr in vcpkg thanks to @RealTimeChris - we should be in vcpkg very soon! |
Nice, thanks! does this auto update from github releases? |
No, not yet. |
Since I have already an ebuild for Gentoo, I might as well move it to ::guru (the AUR equivalent for Gentoo). DPP is probably not big enough (in terms of consumers) for the main repo, but ::guru should suffice. However, since I had to patch the installation for DPP to work on my Gentoo machines (mainly to correct some paths and file names), I might submit a PR making some changes to the installation procedure first. |
thanks, i'd like to see this 😊 |
Hey @NexAdn are you still going to move your ebuild for Gentoo to the GURU? |
bruh |
@SirObby oh boy, I totally forgot that 😓 Feel free to move your ebuild. If you want, we can co-maintain it (you can use [email protected] as my email for metadata.xml). |
The previous method of installation didn't respect the standard dirs, leading to build tools not recognizing DPP correctly. This commit fixes this by moving everything to the standard dirs. As a side effect, files are no longer installed twice, due to CMake already placing some files in the right spots. Issue: brainboxdotcc#590 Issue: brainboxdotcc#335
The previous method of installation didn't respect the standard dirs, leading to build tools not recognizing DPP correctly. This commit fixes this by moving everything to the standard dirs. As a side effect, files are no longer installed twice, due to CMake already placing some files in the right spots. Issue: brainboxdotcc#590 Issue: brainboxdotcc#335
The Gentoo package is now uploaded to GURU and should be available for the public soon. it is maintained by @SirObby and me |
add openssl to vcpkg on linux its not present |
... who uses vcpkg on linux 😂 |
of course, is this something you have experience with? |
Yes I do. I can look into writing a conan recipe. |
i guess the best opiton is to push it into nixpkgs |
AUR needs a new maintainer. The current maintainer (@Eremiell) hasn't been around in a while. If anyone knows how to do this, that'd be great! |
I'm looking at creating a brew package for silicone Mac processors (Darwin). It's currently in the works right now and I'll be back with more information soon. |
Brew PR is up, Edit: Even though a PR was launched to fix the unit tests on Mac, we are no longer required to wait for the unit test and we should expect brew to accept the PR soon. |
We are now on Brew!! 🥳 |
any update on conan support? |
We've had a couple of people say they want to do it but we've not heard anything since, sadly. Is this something you know how to do? |
I have a PR that has a conan recipe. Some work is left to be done to finalize it as well as get it on the conan center. |
tbf Emirell and I were going to do it, however, at that point, Conan 2.0 was still not fully supported |
No longer marked as stale |
I can get working on conan if no one else has |
That would be wonderful! #1066 is the best place to pickup, there was some good progress made here. |
This issue has had no activity and is being marked as stale. If you still wish to continue with this issue please comment to reopen it. |
the next release should be available on Conan 😀 |
we are now in Conan centre! |
Is your feature request related to a problem? Please describe.
Vcpkg or conan support help alleviate the setup for multiple libraries in a project. They help to get started quickly with a framework while still allowing other libraries to be added quickly.
Describe the solution you'd like
Rather than premade build setups, I think that having vcpkg or conan support would enable more ambitious discord bots to be created faster.
Describe alternatives you've considered
Additional context
Tasks added by @braindigitalis
The text was updated successfully, but these errors were encountered: