-
-
Notifications
You must be signed in to change notification settings - Fork 6.8k
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
One build system to rule them all #698
Comments
An explanation of the status quo:
I personally would not really favor merging the pure maintainer scripts and the Cmake files. If the Makefile in the root is confusing, moving it into a subfolder could help. |
I think it would be a good idea to move all Makefile targets that are used in Travis (i.e., running cppcheck, sanitiziers, Valgrind, etc.) into the CMake file. |
That would be great! |
FYI: Started with https://github.com/nlohmann/json/tree/feature/issue698. Strange issue: Clang sanitizers finds issues that were not found before: https://travis-ci.org/nlohmann/json/jobs/268514575 I tried to move the check from the Makefile to the Cmakelists, but it seems the CXXFLAGS differ. Or there really is an issue in the |
Awesome! This could be related to But that's just pure speculation at this point. |
to tackle the package-manager concerns, one way would be that you throw it all out, and keep this project clean from any package-manager stuff. And provide only developer scripts for compiling and running tests, but no installing. Pro:
Con
|
I totally agree. And so far, we only have the |
Agreed, as for Meson, there's no need for a For Conan, it is trivial to implement a recipe for such a project. |
Hi, I took a look at branch I'd like to integrate the changes in my PR, it might solve the Coverall deadlock. |
I'll check tonight. |
@theodelrieu I cleaned up the Makefiles and I currently can't get rid of the |
I propose that you cherry-pick the latest #700 commit to see if that fixes the issue. Basically, the arguments given to coveralls were not in the correct path, and I found out that Coveralls can be given a single directory, whether including or excluding it. |
Thanks, got it! :) |
Coverage is now also handled within CMake. |
Great! I'll try to convert the |
OK. Most of the building is now done by Cmake. There are some maintainer targets left I may clean up some time later. I close this ticket for now. |
Right now, we have mainly two ways of building the library (i.e. tests):
There is also a
meson.build
file, which only provides support for meson users, so they don't have to rely on a wrap.There are some issues with the
CMakeLists.txt
(as #695 shows. I also personally have to clean my build folder each time to regenerate the precompiled header on Linux)There are also targets that are only available in the Makefile (e.g.
make pretty
)I think we should adopt a single build system, I will soon need to add a target to amalgamate the library after we split the monolithic
json.hpp
, and I don't know if I should add it only in the Makefile, the CMakeLists.txt etc...Rewriting everything would not take very long, since this is not a huge project.
What do people think?
My personal preference would go towards Meson, but we could also simply rewrite the CMake to be more in phase with what people call "modern CMake".
The text was updated successfully, but these errors were encountered: