5 ms·
Off the top of my head: - qmake doesn't support true dependencies between subprojects (ie, if I ask it to build a/b/c, it can't know that a/b/c depends on d/e/
by wwright 7y ago
Off the top of my head:
- qmake doesn't support true dependencies between subprojects (ie, if I ask it to build a/b/c, it can't know that a/b/c depends on d/e/f)
- qmake's support for integrating additional compilers is inscrutable and again, has terrible issues with parallelism and dependencies
- the way it is backed by make is prone to incremental build issues
- irishcoffee 7y agoFor point 1, it can if you want it to. https://wiki.qt.io/SUBDIRS_-_handling_dependencies#Defining_Project_Dependencies:_.depends_attributes https://wiki.qt.io/SUBDIRS_-_handling_dependencies#Defining_... I have qt kits to build for 4 different platforms and 3 different build toolchains. It was very easy to set up, and flipping between kits either in creator or in a terminal takes mere seconds. I have never experienced your 3rd point.
- wwright 7y agoThat allows you to support _some_ dependency ordering from the top level, but not internally. It is very coarse, and also suffers from “recursive Makefile” issues. It’s also less ergonomic: a developer can’t go into a specific sub folder and build ONLY that sub folder and its dependencies. If you change a library, it also can't reliably tell you which other binaries are its dependents. You have to let Make walk the full project tree. By “additional compilers,” I mean adding additional metacompilers, other languages, and so on. There is QMAKE_EXTRA_COMPILERS, but I can’t figure out how to get it to properly integrate with the dependency graph for the life of me. Have you ever had to resort to “make distclean” to get a clean compile?
- irishcoffee 7y agoOn your first point I respectfully disagree. The functionality does exactly what you claim it doesn’t do. You are mistaken on every point in your first paragraph. For your second point: https://ortogonal.github.io/qmake-extra-compiler/ https://ortogonal.github.io/qmake-extra-compiler/ I have never used this but it looks straightforward enough. I have never had to use make distclean. I use make clean && qmake && make sometimes.
- jcelerier 7y ago> It’s also less ergonomic: a developer can’t go into a specific sub folder and build ONLY that sub folder and its dependencies I'm not a fan of qmake but this works just fine with it.
- wwright 7y agoThe dependencies is the trick. Given I have this layout: bin/bin.pro # specify bin/bar/ as subfolder bin/bar/bar.c bin/bar/bah.h bin/bar/bar.pro lib/lib.pro # specify lib/foo/ as subfolder lib/foo/foo.c lib/foo/foo.h lib/foo/foo.pro project.pro # specify bin/ and lib/ as subfolders And I have a fresh checkout, how do I compile "bin/bar" and all of its dependencies automatically? I want to run ONLY "bin/bar". I don't want to compile the entire repo. I don't want to have to investigate "bin/bar" and learn all of its transitive dependencies. I just want to run "bin/bar". Honest to god, I have wanted this for over a year and it does not seem possible.