9 ms·
Reading this only pops one question: What is the best replacement of make in 2015? :)
by raindrop777 12y ago
Reading this only pops one question: What is the best replacement of make in 2015? :)
- Puts 12y agoI hear Ruby in a Docker container running on RaspberryPI actually can replace a lot of the functionality of make...
- vezzy-fnord 12y agotup [1], redo [2] and ninja [3] are probably the build systems with the most potential. redo is the simplest, which is unsurprising given that it was originally proposed by djb. Alternatively, you could look into mk, which is the make replacement used by Plan 9, Inferno and derivatives. [1] http://gittup.org/tup/ http://gittup.org/tup/ [2] http://homepage.ntlworld.com/jonathan.deboynepollard/FGA/introduction-to-redo.html http://homepage.ntlworld.com/jonathan.deboynepollard/FGA/int... [3] https://martine.github.io/ninja/ https://martine.github.io/ninja/
- raindrop777 12y agoAre any of these cross-platform like make?
- drothlis 12y agoBuildsome [1] has make-like syntax and some interesting ideas, though I haven't personally tried it. [1] https://github.com/ElastiLotem/buildsome https://github.com/ElastiLotem/buildsome
- baruch 12y agoI've used redo for a while but I didn't like the sprawl of shell script files for the build to work. I switched to ninja mostly for more complex projects and it's very nice, you can do anything in the generation stage and get all the power you need and then run it through ninja and get the full speed benefit of native code for the most common operation (build it!). I used in the past both scons and waf and they are in a way like ninja but since the actual build process is still in python the time to build is longer. scons was a big pain in the ass for a large project and I regretted introducing it. waf was ok though. I still do use make and makefiles for simple projects. It is usually simplest to get running and requires only a build stage without any configuration like ninja does. I also have the basic constructs hard-wired into my brain and can write that simple makefile faster than I can find the example code for ninja.
- zer0rest 12y agoGolang
- hendzen 12y agoCMake with the Ninja generator.
- GFK_of_xmaspast 12y agoCmake.
- santaclaus 12y agoNo love for scons?
- kasperset 12y agoThere was interesting project called Zymake (http://www-personal.umich.edu/~ebreck/code/zymake/ http://www-personal.umich.edu/~ebreck/code/zymake/) but it has not been updated for a while.
- drewbug 12y agoThere's also Bazel, which Google recently released.
- scrollaway 12y agoI've gotten used to CMake and I kind of like it now. The language is atrociously ugly, but it's very functional at least and feature-rich. Ugly-but-functional is better than pretty-but-inherently-broken.
- SSLy 12y agoIs it functional as eg. Haskell is, or is it functional as a tool that does its job well?
- skeuomorf 12y agoThe latter. (In the parent's opinion)
- scrollaway 12y agoYes.
- deleted 12y ago[deleted]
- tobias2014 12y agoIf you want something functional (written in Haskell), try Shake (http://www.shakebuild.com http://www.shakebuild.com). "Shake build systems are Haskell programs, but can be treated as a powerful version of make with slightly funny syntax. The build system requires no significant Haskell knowledge, and is designed so that most features are accessible by learning the "Shake syntax", without any appreciation of what the underlying Haskell means."
- tacos 12y agoSET(i 0) while(i LESS count) LIST(GET extras 0 file) LIST(REMOVE_AT extras 0) LIST(APPEND extras "${root}/${F}/${file}") MATH(EXPR i "${i}+1") endwhile() "Functional" with a FU. It's also buggy as hell.
- 12y ago
- Nullabillity 12y agoFor generic builds or a specific language (family)?
- zanny 12y agoI always like waf. Runs a lot faster than scons and can actually handle a larger project. It still has its own arcane syntax rather than being pythonic, which I think is its greatest shortcoming - it emulates make syntax too much, where I think it would be nicer to just be a good proper python library that specializes in build scripts.
- vishvananda 12y agoGradle? https://gradle.org/ https://gradle.org/
- skeuomorf 12y agoI side with Steve Yegge when it comes to Gradle.[0] [0] https://twitter.com/Steve_Yegge/status/523367285658894337 https://twitter.com/Steve_Yegge/status/523367285658894337
- IshKebab 12y ago[QBS](http://doc.qt.io/qbs/index.html http://doc.qt.io/qbs/index.html) For C++, and if you don't need anything really crazy. It's very readable (JSON-like), and custom rules can be defined in Javascript instead of "learn another language". It's also very fast - kind of highlights how slow Make is! No build system should be slow. It's usable now but still kind of a work in progress.
- colin_mccabe 12y agoThere are really only three sane choices for C/C++ build systems right now, in my opinion: 1. Traditional Make files. Keep it simple, don't feel compelled to use all the dark corners of the language, and accept that it will be a little more verbose than some other solutions. And don't expect portability to Windows, since you won't get it (cygwin doesn't count as Windows). There are some portability problems between UNIX variants, but actually I think it's pretty easy to deal with these in plain old Make. 2. CMake. It makes the simple things simple and the hard things possible. It has its own simple scripting language which build files are written in, so you don't need to tear out your hair worrying about whether the the user's version of bash / python / perl / whatever matches yours. The language has the abstractions and functions that you need built-in, so most CMakeLists.txt tend to look the same (less wheel reinvention than you would get just using a general purpose language like Python or Perl for Makefiles.) CMake is built with backwards compatibility in mind, so you can easily use old projects with newer versions of CMake. This is something you just don't get with autotools, where you have to have the correct version (not newer, not older) of autotools installed to build the project. CMake does the detection of which header files are needed to rebuild which .c or .cc files which plain old Make doesn't do (without adding clunky extensions). CMake is also portable to Windows, which autotools is not. (again, limping along under cygwin doesn't count.) CMake can generate visual studio projects which can be used to directly build software. 3. Visual studio. If you only care about Windows, this is a sane choice.
- _ZeD_ 12y agomake