6a221f3d05
Consider the following source tree: foo/narf.cpp bar/narf.c bar/gnampf.cpp The .pro file has SOURCES += foo/narf.cpp bar/gnampf.cpp The file bar/narf.c is not supposed to be built for whatever reason. QMake's nmake Makefile generator generates inference rules of the form {.\foo}.cpp{debug\}.obj:: ... for every source subdirectory and every source file extension. Thus, we have {.\foo}.cpp{debug\}.obj:: {.\bar}.cpp{debug\}.obj:: {.\bar}.c{debug\}.obj:: Depending on the exact execution order of the inference rules (which depends on the names of the files) the latter rule might get picked, and we're erronously compiling bar/narf.c even though it's not referenced in the .pro file. Conclusion: QMake's detection of conflicting source files must consider the base names of source files, and not the exact file names. Fixes: QTBUG-72059 Change-Id: I50c2725ae2a7421053369a10680230f571af00ea Reviewed-by: Oliver Wolff <oliver.wolff@qt.io> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io> |
||
---|---|---|
.. | ||
doc | ||
generators | ||
library | ||
cachekeys.h | ||
main.cpp | ||
Makefile.unix | ||
Makefile.unix.macos | ||
Makefile.unix.mingw | ||
Makefile.unix.unix | ||
Makefile.unix.win32 | ||
Makefile.win32 | ||
meta.cpp | ||
meta.h | ||
option.cpp | ||
option.h | ||
project.cpp | ||
project.h | ||
property.cpp | ||
property.h | ||
qmake_pch.h | ||
qmake-aux.pro | ||
qmake.pro |