Show HN: Modern C++ Build Tools for Module Feature

(github.com)

7 points | by sunrisepeak 14 hours ago ago

3 comments

  • Panzerschrek 9 hours ago

    > mcpp.toml ← project manifest

    It's a fatal flaw. A declarative language isn't powerful enough to be able to describe complexity of typical C++ project. That's why cmake language (Turing-complete) exists.

    • derriz 7 hours ago

      What sort of C++ project requires general recursion to describe its build process? I could imagine a compile step not terminating - due to some crazy template meta-programming glitch but the build system itself? The output of a compile or link operation (or preprocess or source generation step) has a distinctly different type to that of its input - so I don’t see how a potentially infinite chain of build operations can be constructed from these build steps?

    • sunrisepeak 8 hours ago

      Design Idea: Simple is better. Easy is better. (complexity shoude be gradual for devolper)

      mcpp use `mcpp.toml + build.mcpp` model to describe a project (like cargo/zig)

      - 90+% project -> mcpp.toml

      - other complex project -> mcpp.toml + build.mcpp (C++ / Turing-complete)

      so mcpp target is manage toolchain/package and easy to new / build / run / describe for project.

      C++23/26 is simply, but run a helloworld(by `import std`) program is difficult. mcpp can do it. dont need to config any, dont need to know compiler what is. focus on program itself

      ```

      mcpp new hello && cd hello && mcpp run

      ```

      of course, it can also use `mcpp toolchain list` to choose gcc/llvm/msvc/mingw

      Example: mcpp already support complex projects - opencv / grpc / ffmpeg

      ```

      mcpp new mygrpc_demo --template grpc:greeter && cd mygrpc_demo && mcpp run

      ```

      https://github.com/mcpplibs/grpc-m // use build.mcpp to codegen

      (Test on Ubuntu 24 / default gcc 16 by mcpp auto-install)

      However, it must be acknowledged that `mcpp` is an early-stage project, and you may encounter some issues (include library ecosystem) ,feel free reply or create issue or talk with me.