Nothing against make, but I've found that it feels really nice when the majority of your toolset uses the same language. This is what I liked about Rails. Rails is ruby. Bundler is ruby. Rake is ruby. It's all ruby, which allows for a certain synergy, streamlined feel, and less cognitive overhead. I don't blame the js folks for attempting something similar.
Build Tools – Make, no more
101–110 of 143 posts
Re: Build Tools – Make, no more
#102Earlier quoted context omitted.
Because now make can't build a clean source tree. I believe make parses the entire Makefile before running it.
GNU make restarts when a Makefile: dependency changes. So it works perfectly fine. Try it ...
Re: Build Tools – Make, no more
#103Might go a bit off topic but i have to bring this up since 9 out of 10 make tutorials on the internet do the same horrific mistake as you just did, 11 out of 10 code bases out in the wild as well. In your make file example the .o files are just depending on the .cpp files, not the header files they include, the header files those included header files include and the files they include etc etc. This means nothing wil…
Is that solved with autotools? I'm not an expert, but I wonder why people talk about pure Make where a lot of bigger projects actually use autotools.
Re: Build Tools – Make, no more
#104So he's saying use 'make' instead of gulp/grunt and then he submits an example where it's as easy as piping through GCC. He's making the wrong assumption that you don't need to setup a build environment when building with make, but to have gcc you will still also need to install g++ and build-tools. Also, he refers to building on Windows using yet another specialist tool, but have you recently tried building anything…
$ cat Makefile
production:
brunch build --production
test:
brunch build
karma startRe: Build Tools – Make, no more
#105the last 10 years in build tools has felt like 1 step forward, two steps back. i like being able to write tasks in any language other than Makefile. however, it seems like many of the new popular options (cake, grunt, etc.) don't do what, to me, is Make's real purpose: resolve dependencies and only rebuild what's necessary. new task runners have either eliminated or pigeonholed the (typically one-to-one in makeland)…
> however, it seems like many of the new popular options (cake, grunt, etc.) don't do what, to me, is Make's real purpose: resolve dependencies and only rebuild what's necessary. You might like tup[1]. Its killer feature is that it automatically determines file-based dependencies by tracking reads and writes (using a FUSE filesystem). It has an extreme emphasis on correct, repeatable builds, and is very fast. Other s…
Similar to what lsof, procmon (windows) do.
Re: Build Tools – Make, no more
#106For example:
clean:
rm -rf *o hello
Did you really mean to erase all files and directories that end in "o"? Let's say it's just a typo and fix it: "*.o".Now, are you sure it'll handle files with spaces in the name? What about dashes, brackets and asterisks? Accents? What if a directory ends in .o? Hidden files?
This specific case may support all of the above. But if it doesn't, what will happen? How long until you notice, and how long still to diagnose the problem?
Just like I prefer static strong typing when developing non-trivial projects, the build system should be more structured. I agree endless reinventing is tiring, but it may have some credit in this case.
Re: Build Tools – Make, no more
#107I've never felt hindered by Gradle. Hindered by the fact I can't add an arbitrary github repo through Gradle? Yes. That seems like it should be solvable though...
Re: Build Tools – Make, no more
#108Dunno if the owner of the site will read this, but here's a tip. Don't show a full screen overlay telling me how my visit would be better with cookies enabled. 1) I have cookies enabled. 2) The Eurpoean law is daft, but since you feel you must comply do it in a more user friendly way.
I know. I don't agree with it much either and I found this least intrusive (wasn't aware of issue on mobile). If I can find a better solution, will change. Thanks.
Re: Build Tools – Make, no more
#109Earlier quoted context omitted.
make is a general-purpose tool for describing dependencies for regenerating files. It would be worth your while to learn make, and try it on your example. Understand that it's a declarative language ("A depends on B"; when "B" changes, here's how to update "A"), and not a scripting tool. This is a good thing. In my experience, make is coupled to Unix. Make is not coupled to C.
In my experience, make is coupled to Unix. Make is not coupled to C. However, implementations typically include magic that is heavily biased toward building C and C++ code. As someone who works on a lot of projects, some using those languages and some not, I tend to think it's rather too magical at times. Personally, I'd prefer to have that kind of magic explicitly stated in some standard file that comes with the too…
The rule applicable to C pertains to building foo.o from foo.c. It amounts to two lines in a Makefile:
%.o: %.c
$(COMPILE.c) $(OUTPUT_OPTION) $
where COMPILE.c and the other variable is predefined to trivial values.There are other rules useful for C++, and for yacc, etc., but they are just as simple.
You can cancel all the implicit rules with "-r", or cancel selected implicit rules by naming them in the Makefile like this:
%.o : %.c ;
All this is in the make manual, which is quite good: https://www.gnu.org/software/make/manual/html_node/Catalogue...Re: Build Tools – Make, no more
#110I'd like to think people have decided that it's easier to replicate the task part of Makefiles onto their environment as the simpler alternative to making dependency management and various other language-specific tasks available to make.