3 ms·
Using Cmake is so much nicer than make, and it's deeply cross-platform. Cmake makes cross-compiling really easy, while with make you have to be careful and pres
by brian-armstrong 9y ago
Using Cmake is so much nicer than make, and it's deeply cross-platform. Cmake makes cross-compiling really easy, while with make you have to be careful and preserve flags correctly. Much nicer to just include a cmake module that sets up everything for you. Plus it can generate xcode and visual studio configs for you. Doing make by hand just seems unncessary.
- kyberias 9y agoI always felt that for small setups, makefiles are much more concise and easy to understand. And more generic. Cmakefile.txt seems always really messy and introduce concepts such as project and exes and dlls. But of course Cmake is super-portable I know.
- brian-armstrong 9y agoEvery time I think this, I end up going back later and wishing I had just done Cmake. If you just want to compile all the .c files it's easy enough to GLOB and make a couple targets, then come back and make it more sophisticated later
- everheardofc 9y agoExcept with make most small setups are at least 20-40 lines of nontrivial code becaue you have to redo everything from scratch
- slrz 9y agoinclude std.mk TARGET=foo HFILES=bar.h OFILES=main.o foo.o baz.o include cmd.mk This is what Makefiles tend to look like in some places.
- jcelerier 9y agoIs project(my_software CXX) add_library(my_lib foo.cpp bar.cpp) target_include_directories(my_lib PUBLIC include/lib) add_executable(my_app bluh.cpp) target_link_libraries(my_app my_lib) really more complicated than the equivalent makefile ? Especially given that: * this can generate ninja files instead of make * it adds the common targets such as make help, make clean, make install * dependency graphs can be generated with cmake --graphviz * solutions for various IDEs * etc...
- cbcoutinho 9y agoI'm not sure why people compare cmake and make - cmake is essentially a makefile generator to handle automatic dependency tracking. You can even generate other types other types of build files (ninja, visual studio, etc). Not to just point your comment out because I see this all the time, but I don't understand where this confusion is coming from.
- humanrebar 9y ago> I'm not sure why people compare cmake and make You can declare your project structure, metadata, and other build/install/test logic in either. They're thinking about their use cases, not the language and workflow used to achieve them.
- brian-armstrong 9y agoWell, if anything, I think it demonstrates that Makefile is something that should be compiled, not written by hand edit: and for context, this is usually what happens anyway, since autoconf does it too. it's hard to think of a major project with a manually edited Makefile
- W0lf 9y agoMay I kindly plug my upcoming book [1] for writing CMake in an effective and straightforward manner :-) I was just porting a large Makefile based build system over to CMake and had the 'pleasure' to find out why recursive Make really is the root of all evil and just doesn't scale well enough for large software systems. At least to my mind. [1] https://leanpub.com/effective-cmake https://leanpub.com/effective-cmake