open-source-parsers / open-source-parsers/jsoncpp

Add ready-to-use amalgamation to Releases

Open
#1,311 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

enhancement
Dominant language
C++
Stars
8.9k
Forks
2.7k
Avg merge
31m
Merged PRs (30d)
1

Description

Is your feature request related to a problem? Please describe.
I use cmake FetchContent to download and build amalgamation automatically. It works fine, but unfortunately makes my build dependent on python. Not big deal but it is kinda frustrating

# Download & build jsoncpp from amalgamation
FetchContent_Declare (
    jsoncpp-dl
    URL https://github.com/open-source-parsers/jsoncpp/archive/refs/tags/1.9.4.tar.gz
    URL_HASH          SHA1=d0cceda7df8d6e77d6acde6b9dea0ff604be6b36
    PATCH_COMMAND python amalgamate.py # Would be nice if I could get rid of this
)
FetchContent_Populate(jsoncpp-dl)
add_library(jsoncpp ${jsoncpp-dl_SOURCE_DIR}/dist/jsoncpp.cpp)
target_include_directories(jsoncpp PUBLIC ${jsoncpp-dl_SOURCE_DIR}/dist/json)
# for sake of brevity, I haven't included code responsible for defining `JSON_DLL` macro

Describe the solution you'd like
Would be nice, if you could just ship something like amalgamation.X.Y.Z.zip with already amalgamated sources, alongside normal source archive. It would simplify deployment

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reading amalgamate.py and inspecting how the normal source archive is produced for Releases. Done means each release also publishes an amalgamation.X.Y.Z.zip containing the already-generated sources, so CMake FetchContent can use it without running Python.

Written by the indexing model from the issue text.

Assessment

Tech stack
cmake, cpp, python
Domain
build-system, release
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
38/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.