What is a good build tool?
I'm especially looking for:
- Compiled languages
- Multiple target platforms (e.g. like Kotlin JVM and JS, or Rust/C++ binary and wasm)
I've tried some quite a bit (Make, SCons, Gradle) and others a little (Ant, Maven, some JS bundlers, and just writing a shell script) and the best of them are tolerable.
I'm asking because I'm working on a programming language. If I can re-use an existing one that'd be great, otherwise hopefully I can still learn from them.
I feel like a good build tool should:
- Be very easy for simple projects
- But still be pretty easy for complex projects, because who wants to spend time on build tools?
- Be powerful for complex projects (at least support subprojects and multiple targets)
- Give good error messages
- Possibly integrate with package manager
- Be fast!
- Be multiplatform
- Not require one to list all source files
- Integrate with IDEs, though I guess that’s mostly on the IDEs
For example
- Should the package manager be integrated with the build tool?
- Do you think they should be declarative or more procedural?
- Should they be a separate language? Full-on programming language?
- Should one even try to make it work for multiple languages, or is that hopeless??
- How important are plugins?
- Which build systems are good examples?
Thank you for your input!