1 comments

  • Panzerschrek 7 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 5 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 5 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.