Output: = METHOD 1: = - depends - SUBDIRS in necessary build order listed (which should not be needed, but see Method 2) - build_pass active - qmake 5.4.1: == Summary: == qmake -tp vc -r (MSVS2010) does detect dependencies. qmake -r (QtCreator) does detect dependency. Both build correctly! If some project are independent (e.g. lib and lib2) they are build in parallel. If both are finished, app is build. So: DO USE THIS method. Drawback 1: However you have to keep the listing in build order. This should not be needed as we have the dependencies set by hand already and all necessary info is given by this. But due to a bug described in Method 2 you will have to, if you want to use msbuild and nmake. Drawback 2: For MSVS2010 this is only supported under newer qmake (Qt 5.x). qmake -tp vc -r of older Qt (4.8) fails on this. However if you use qmake -r, nmake (QtCreator): the qmake of 4.8.6 does handle it! == nmake == === Makefile === sub-src-lib: FORCE ... sub-src-lib2: FORCE ... sub-src-app: sub-src-lib \ sub-src-lib2 FORCE ... Comment: app depends on lib and lib2. Ok! === nmake / jom=== jom /D *01.01.1601 01:00:00 FORCE *18.04.2015 14:47:19 sub-src-lib-make_first *18.04.2015 14:47:19 sub-src-lib2-make_first cd src\lib\ && ( if not exist Makefile C:\Qt_online\5.4\msvc2010_opengl\bin\qmake.exe C:\Users\Michael\QtProgramme\subdirs_test\src\lib\lib.pro -spec win32-msvc2010 -o Makefile ) && c:\Qt_online\Tools\QtCreator\bin\jom.exe -f Makefile *01.01.1601 01:00:00 FORCE *01.01.1601 01:00:00 release c:\Qt_online\Tools\QtCreator\bin\jom.exe -f Makefile.Release 18.04.2015 14:43:24 release\lib.obj 18.04.2015 14:43:24 release\lib.dll *18.04.2015 14:43:24 all *18.04.2015 14:43:24 first *18.04.2015 14:43:24 first cd src\lib2\ && ( if not exist Makefile C:\Qt_online\5.4\msvc2010_opengl\bin\qmake.exe C:\Users\Michael\QtProgramme\subdirs_test\src\lib2\lib2.pro -spec win32-msvc2010 -o Makefile ) && c:\Qt_online\Tools\QtCreator\bin\jom.exe -f Makefile *01.01.1601 01:00:00 FORCE *01.01.1601 01:00:00 release c:\Qt_online\Tools\QtCreator\bin\jom.exe -f Makefile.Release 18.04.2015 14:43:24 release\lib2.obj 18.04.2015 14:43:24 release\lib2.dll *18.04.2015 14:43:24 all *18.04.2015 14:43:24 first *18.04.2015 14:43:24 first *18.04.2015 14:47:19 sub-src-app-make_first cd src\app\ && ( if not exist Makefile C:\Qt_online\5.4\msvc2010_opengl\bin\qmake.exe C:\Users\Michael\QtProgramme\subdirs_test\src\app\app.pro -spec win32-msvc2010 -o Makefile ) && c:\Qt_online\Tools\QtCreator\bin\jom.exe -f Makefile *01.01.1601 01:00:00 FORCE *01.01.1601 01:00:00 release c:\Qt_online\Tools\QtCreator\bin\jom.exe -f Makefile.Release 18.04.2015 14:43:25 release\main.obj 18.04.2015 14:43:25 release\app.exe *18.04.2015 14:43:25 all *18.04.2015 14:43:25 first *18.04.2015 14:43:25 first *18.04.2015 14:47:19 make_first *18.04.2015 14:47:19 first Comment: Parallel lib and lib2, then building app == vs2010 == === vs2010 sln === Microsoft Visual Studio Solution File, Format Version 11.00 # Visual Studio 2010 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "lib", "C:/Users/Michael/QtProgramme/subdirs_test/src/lib\lib.vcxproj", "{BBD7705B-EE58-39F5-9DA4-17D53DE9F205}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "lib2", "C:/Users/Michael/QtProgramme/subdirs_test/src/lib2\lib2.vcxproj", "{E2C38A45-30F3-3D3D-9D94-91EB9244EAF6}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "app", "C:/Users/Michael/QtProgramme/subdirs_test/src/app\app.vcxproj", "{124A643E-E033-36E6-AA41-AD3E268A86DE}" ProjectSection(ProjectDependencies) = postProject {BBD7705B-EE58-39F5-9DA4-17D53DE9F205} = {BBD7705B-EE58-39F5-9DA4-17D53DE9F205} {E2C38A45-30F3-3D3D-9D94-91EB9244EAF6} = {E2C38A45-30F3-3D3D-9D94-91EB9244EAF6} EndProjectSection EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Win32 = Debug|Win32 Release|Win32 = Release|Win32 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {BBD7705B-EE58-39F5-9DA4-17D53DE9F205}.Debug|Win32.ActiveCfg = Debug|Win32 {BBD7705B-EE58-39F5-9DA4-17D53DE9F205}.Debug|Win32.Build.0 = Debug|Win32 {BBD7705B-EE58-39F5-9DA4-17D53DE9F205}.Release|Win32.ActiveCfg = Release|Win32 {BBD7705B-EE58-39F5-9DA4-17D53DE9F205}.Release|Win32.Build.0 = Release|Win32 {E2C38A45-30F3-3D3D-9D94-91EB9244EAF6}.Debug|Win32.ActiveCfg = Debug|Win32 {E2C38A45-30F3-3D3D-9D94-91EB9244EAF6}.Debug|Win32.Build.0 = Debug|Win32 {E2C38A45-30F3-3D3D-9D94-91EB9244EAF6}.Release|Win32.ActiveCfg = Release|Win32 {E2C38A45-30F3-3D3D-9D94-91EB9244EAF6}.Release|Win32.Build.0 = Release|Win32 {124A643E-E033-36E6-AA41-AD3E268A86DE}.Debug|Win32.ActiveCfg = Debug|Win32 {124A643E-E033-36E6-AA41-AD3E268A86DE}.Debug|Win32.Build.0 = Debug|Win32 {124A643E-E033-36E6-AA41-AD3E268A86DE}.Release|Win32.ActiveCfg = Release|Win32 {124A643E-E033-36E6-AA41-AD3E268A86DE}.Release|Win32.Build.0 = Release|Win32 EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution EndGlobalSection GlobalSection(ExtensibilityAddIns) = postSolution EndGlobalSection EndGlobal Comment: Dependencies are nicely set. === Build log: === Rebuild: 1>------ Build started: Project: lib2, Configuration: Debug Win32 ------ 2>------ Build started: Project: lib, Configuration: Debug Win32 ------ 1> lib2.cpp 2> lib.cpp 1> Creating library debug\\lib2d.lib and object debug\\lib2d.exp 2> Creating library debug\\libd.lib and object debug\\libd.exp 1> lib2.vcxproj -> C:\Users\Michael\QtProgramme\subdirs_test\src\lib2\debug\lib2d.dll 2> lib.vcxproj -> C:\Users\Michael\QtProgramme\subdirs_test\src\lib\debug\libd.dll 3>------ Build started: Project: app, Configuration: Debug Win32 ------ 3> main.cpp 3> app.vcxproj -> C:\Users\Michael\QtProgramme\subdirs_test\src\app\debug\app.exe Comment: lib2 and lib are build in parallel. app is started when lib1 and lib2 was completed. = METHOD 2: = - depends - SUBDIRS *not* in demanded build order listed - build_pass active - qmake 5.4.1: == Summary: == QtCreator: qmake -r does detect any dependency. So it builds correctly! qmake -tp vc -r (MSVS2010) does *not* detect any dependency. Even though they are given by hand!!! This is a bug (as of 18-Apr-2015) and should be fixed. It should enough to set the dependencies to be in the same league that the qmake -r (QtCreator) is. So building should fail due to race conditions. The MSVS2010 "Project Dependencies" panel does not show any dependencies, as expected. However in the MSVS2010 case the build works! Somehow the IDE checks about the dependencies internally. Later build seem to wait for building of the libs, too... Wow MS! But msbuild fails!!! So think CI ..... So: DO NOT USE THIS until it is fixed. Keep an close eye on the order of the subdir entries. (Method 1) But: This should be fixed! == nmake == === Makefile === ... sub-src-app: sub-src-lib \ sub-src-lib2 FORCE ... sub-src-lib: FORCE ... sub-src-lib2: FORCE ... Comment: app depends on lib and lib2. Ok! === nmake / jom=== jom /D *01.01.1601 01:00:00 FORCE *18.04.2015 16:18:26 sub-src-lib-make_first *18.04.2015 16:18:26 sub-src-lib2-make_first cd src\lib2\ && ( if not exist Makefile C:\Qt_online\5.4\msvc2010_opengl\bin\qmake.exe C:\Users\Michael\QtProgramme\subdirs_test\src\lib2\lib2.pro -spec win32-msvc2010 -o Makefile ) && c:\Qt_online\Tools\QtCreator\bin\jom.exe -f Makefile *01.01.1601 01:00:00 FORCE *01.01.1601 01:00:00 release c:\Qt_online\Tools\QtCreator\bin\jom.exe -f Makefile.Release *01.01.1601 01:00:00 release\lib2.obj cl -c -nologo -Zm200 -Zc:wchar_t -O2 -MD -GR -W3 -w34100 -w34189 -EHsc -DUNICODE -DWIN32 -DLIB2_LIBRARY -DQT_NO_DEBUG -DQT_CORE_LIB -DNDEBUG -I"." -I"C:\Qt_online\5.4\msvc2010_opengl\include" -I"C:\Qt_online\5.4\msvc2010_opengl\include\QtCore" -I"release" -I"C:\Qt_online\5.4\msvc2010_opengl\mkspecs\win32-msvc2010" -Forelease\ @C:\Users\Michael\AppData\Local\Temp\lib2.obj.10728.0.jom lib2.cpp *01.01.1601 01:00:00 release\lib2.dll link /NOLOGO /DYNAMICBASE /NXCOMPAT /INCREMENTAL:NO /DLL /SUBSYSTEM:WINDOWS /MANIFEST /MANIFESTFILE:release\lib2.dll.embed.manifest /OUT:release\lib2.dll @C:\Users\Michael\AppData\Local\Temp\lib2.dll.10728.546.jom Creating library release\lib2.lib and object release\lib2.exp mt.exe /nologo /manifest release\lib2.dll.embed.manifest /outputresource:release\lib2.dll;2 *18.04.2015 16:18:29 all *18.04.2015 16:18:29 first *18.04.2015 16:18:29 first cd src\lib\ && ( if not exist Makefile C:\Qt_online\5.4\msvc2010_opengl\bin\qmake.exe C:\Users\Michael\QtProgramme\subdirs_test\src\lib\lib.pro -spec win32-msvc2010 -o Makefile ) && c:\Qt_online\Tools\QtCreator\bin\jom.exe -f Makefile *01.01.1601 01:00:00 FORCE *01.01.1601 01:00:00 release c:\Qt_online\Tools\QtCreator\bin\jom.exe -f Makefile.Release 18.04.2015 14:43:24 release\lib.obj 18.04.2015 14:43:24 release\lib.dll *18.04.2015 16:18:13 all *18.04.2015 16:18:13 first *18.04.2015 14:43:24 first *18.04.2015 16:18:30 sub-src-app-make_first cd src\app\ && ( if not exist Makefile C:\Qt_online\5.4\msvc2010_opengl\bin\qmake.exe C:\Users\Michael\QtProgramme\subdirs_test\src\app\app.pro -spec win32-msvc2010 -o Makefile ) && c:\Qt_online\Tools\QtCreator\bin\jom.exe -f Makefile *01.01.1601 01:00:00 FORCE *01.01.1601 01:00:00 release c:\Qt_online\Tools\QtCreator\bin\jom.exe -f Makefile.Release 18.04.2015 14:43:25 release\main.obj 18.04.2015 14:43:25 release\app.exe *18.04.2015 16:18:13 all *18.04.2015 16:18:13 first *18.04.2015 14:43:25 first *18.04.2015 16:18:30 make_first *18.04.2015 16:18:30 first Comment: Parallel lib and lib2, then building app == vs2010 == === vs2010 sln === Microsoft Visual Studio Solution File, Format Version 11.00 # Visual Studio 2010 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "app", "C:/Users/Michael/QtProgramme/subdirs_test/src/app\app.vcxproj", "{124A643E-E033-36E6-AA41-AD3E268A86DE}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "lib", "C:/Users/Michael/QtProgramme/subdirs_test/src/lib\lib.vcxproj", "{BBD7705B-EE58-39F5-9DA4-17D53DE9F205}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "lib2", "C:/Users/Michael/QtProgramme/subdirs_test/src/lib2\lib2.vcxproj", "{E2C38A45-30F3-3D3D-9D94-91EB9244EAF6}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Win32 = Debug|Win32 Release|Win32 = Release|Win32 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {124A643E-E033-36E6-AA41-AD3E268A86DE}.Debug|Win32.ActiveCfg = Debug|Win32 {124A643E-E033-36E6-AA41-AD3E268A86DE}.Debug|Win32.Build.0 = Debug|Win32 {124A643E-E033-36E6-AA41-AD3E268A86DE}.Release|Win32.ActiveCfg = Release|Win32 {124A643E-E033-36E6-AA41-AD3E268A86DE}.Release|Win32.Build.0 = Release|Win32 {BBD7705B-EE58-39F5-9DA4-17D53DE9F205}.Debug|Win32.ActiveCfg = Debug|Win32 {BBD7705B-EE58-39F5-9DA4-17D53DE9F205}.Debug|Win32.Build.0 = Debug|Win32 {BBD7705B-EE58-39F5-9DA4-17D53DE9F205}.Release|Win32.ActiveCfg = Release|Win32 {BBD7705B-EE58-39F5-9DA4-17D53DE9F205}.Release|Win32.Build.0 = Release|Win32 {E2C38A45-30F3-3D3D-9D94-91EB9244EAF6}.Debug|Win32.ActiveCfg = Debug|Win32 {E2C38A45-30F3-3D3D-9D94-91EB9244EAF6}.Debug|Win32.Build.0 = Debug|Win32 {E2C38A45-30F3-3D3D-9D94-91EB9244EAF6}.Release|Win32.ActiveCfg = Release|Win32 {E2C38A45-30F3-3D3D-9D94-91EB9244EAF6}.Release|Win32.Build.0 = Release|Win32 EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution EndGlobalSection GlobalSection(ExtensibilityAddIns) = postSolution EndGlobalSection EndGlobal Comment: Dependencies are missing completely output of qmake with debugflag: DEBUG_SOLUTION_GEN Project MESSAGE: Method 2 --- usign the .depends with wrong SUBDIRS order Reading C:/Users/Michael/QtProgramme/subdirs_test/src/app/app.pro Reading C:/Users/Michael/QtProgramme/subdirs_test/src/lib/lib.pro Project MESSAGE: lib - no build pass Project MESSAGE: libd debug Project MESSAGE: lib release Reading C:/Users/Michael/QtProgramme/subdirs_test/src/lib2/lib2.pro Project MESSAGE: lib2 - no build pass Project MESSAGE: lib2d debug Project MESSAGE: lib2 release Deps for app.exe: [Qt5Core.lib] Project MESSAGE: lib - no build pass Deps for lib.lib: [Qt5Core.lib] Project MESSAGE: lib2 - no build pass Deps for lib2.lib: [Qt5Core.lib] Comment: So, app, because it comes first, does not know anything about the libs .... But what happened to the depends. Shouldn't this be enough? === Build log: === Rebuild: 1>------ Rebuild All started: Project: lib, Configuration: Debug Win32 ------ 2>------ Rebuild All started: Project: app, Configuration: Debug Win32 ------ 3>------ Rebuild All started: Project: lib2, Configuration: Debug Win32 ------ 1> lib.cpp 2> main.cpp 3> lib2.cpp 1> Creating library debug\\libd.lib and object debug\\libd.exp 3> Creating library debug\\lib2d.lib and object debug\\lib2d.exp 3> lib2.vcxproj -> C:\Users\Michael\QtProgramme\subdirs_test\src\lib2\debug\lib2d.dll 1> lib.vcxproj -> C:\Users\Michael\QtProgramme\subdirs_test\src\lib\debug\libd.dll 2>LINK : fatal error LNK1104: cannot open file 'libd2.lib' Comment: Now lib, app, and lib2 are build in parallel. Race condition: libd2.lib is not build when app wants to link. = METHOD 3: = - *no* depends - SUBDIRS not in build order - build_pass active - qmake 5.4.1: == Summary: == qmake -tp vc -r (MSVS2010) and also qmake -r (QtCreator) do *not* detect any dependency. So building should fail due to race conditions. And this happens in the QtCreator case, as expected. Even worse later build will link non up-to-date libraries !!! The MSVS2010 "Project Dependencies" panel does not show any dependencies, as expected. However in the MSVS2010 case the build works! Somehow the IDE checks about the dependencies internally. Later build seem to wait for building of the libs, too... Wow MS! But anyhow: DO NOT USE THIS !!! (Or you must stay on the MSVS2010 track and will miss QtCreator) (Or you you will not be able to use msbuild: it fails, too ... goodbye CI) == nmake == === Makefile === ... sub-src-app: FORCE ... sub-src-lib: FORCE ... sub-src-lib2: FORCE ... Comment: app depends *NOT* on lib and lib2. Not nice .... === nmake / jom=== jom /D *01.01.1601 01:00:00 FORCE *18.04.2015 16:51:47 sub-src-app-make_first *18.04.2015 16:51:47 sub-src-lib-make_first *18.04.2015 16:51:47 sub-src-lib2-make_first cd src\app\ && ( if not exist Makefile C:\Qt_online\5.4\msvc2010_opengl\bin\qmake.exe C:\Users\Michael\QtProgramme\subdirs_test\src\app\app.pro -o Makefile ) && c:\Qt_online\Tools\QtCreator\bin\jom.exe -f Makefile *01.01.1601 01:00:00 FORCE *01.01.1601 01:00:00 release c:\Qt_online\Tools\QtCreator\bin\jom.exe -f Makefile.Release *17.04.2015 21:13:30 release\main.obj cl -c -nologo -Zm200 -Zc:wchar_t -O2 -MD -GR -W3 -w34100 -w34189 -EHsc -DUNICODE -DWIN32 -DQT_NO_DEBUG -DQT_CORE_LIB -DNDEBUG -I"." -I"..\lib" -I"C:\Qt_online\5.4\msvc2010_opengl\include" -I"C:\Qt_online\5.4\msvc2010_opengl\include\QtCore" -I"release" -I"C:\Qt_online\5.4\msvc2010_opengl\mkspecs\win32-msvc2010" -Forelease\ @C:\Users\Michael\AppData\Local\Temp\main.obj.8368.0.jom main.cpp *18.04.2015 16:51:47 release\app.exe link /NOLOGO /DYNAMICBASE /NXCOMPAT /INCREMENTAL:NO /SUBSYSTEM:CONSOLE "/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" /MANIFEST /MANIFESTFILE:release\app.exe.embed.manifest /OUT:release\app.exe @C:\Users\Michael\AppData\Local\Temp\app.exe.8368.483.jom LINK : fatal error LNK1181: cannot open input file 'lib.lib' Comment: all in parallel. Race condition ending up in building app.exe before lib.lib is build!!! == vs2010 == === vs2010 sln === Microsoft Visual Studio Solution File, Format Version 11.00 # Visual Studio 2010 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "app", "C:/Users/Michael/QtProgramme/subdirs_test/src/app\app.vcxproj", "{124A643E-E033-36E6-AA41-AD3E268A86DE}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "lib", "C:/Users/Michael/QtProgramme/subdirs_test/src/lib\lib.vcxproj", "{BBD7705B-EE58-39F5-9DA4-17D53DE9F205}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "lib2", "C:/Users/Michael/QtProgramme/subdirs_test/src/lib2\lib2.vcxproj", "{E2C38A45-30F3-3D3D-9D94-91EB9244EAF6}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Win32 = Debug|Win32 Release|Win32 = Release|Win32 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {124A643E-E033-36E6-AA41-AD3E268A86DE}.Debug|Win32.ActiveCfg = Debug|Win32 {124A643E-E033-36E6-AA41-AD3E268A86DE}.Debug|Win32.Build.0 = Debug|Win32 {124A643E-E033-36E6-AA41-AD3E268A86DE}.Release|Win32.ActiveCfg = Release|Win32 {124A643E-E033-36E6-AA41-AD3E268A86DE}.Release|Win32.Build.0 = Release|Win32 {BBD7705B-EE58-39F5-9DA4-17D53DE9F205}.Debug|Win32.ActiveCfg = Debug|Win32 {BBD7705B-EE58-39F5-9DA4-17D53DE9F205}.Debug|Win32.Build.0 = Debug|Win32 {BBD7705B-EE58-39F5-9DA4-17D53DE9F205}.Release|Win32.ActiveCfg = Release|Win32 {BBD7705B-EE58-39F5-9DA4-17D53DE9F205}.Release|Win32.Build.0 = Release|Win32 {E2C38A45-30F3-3D3D-9D94-91EB9244EAF6}.Debug|Win32.ActiveCfg = Debug|Win32 {E2C38A45-30F3-3D3D-9D94-91EB9244EAF6}.Debug|Win32.Build.0 = Debug|Win32 {E2C38A45-30F3-3D3D-9D94-91EB9244EAF6}.Release|Win32.ActiveCfg = Release|Win32 {E2C38A45-30F3-3D3D-9D94-91EB9244EAF6}.Release|Win32.Build.0 = Release|Win32 EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution EndGlobalSection GlobalSection(ExtensibilityAddIns) = postSolution EndGlobalSection EndGlobal Comment: Dependencies are missing completely === Build log: === Rebuild: 1>------ Build started: Project: lib, Configuration: Debug Win32 ------ 2>------ Build started: Project: app, Configuration: Debug Win32 ------ 3>------ Build started: Project: lib2, Configuration: Debug Win32 ------ 1> lib.cpp 2> main.cpp 3> lib2.cpp 1> Creating library debug\\libd.lib and object debug\\libd.exp 3> Creating library debug\\lib2d.lib and object debug\\lib2d.exp 3> lib2.vcxproj -> C:\Users\Michael\QtProgramme\subdirs_test\src\lib2\debug\lib2d.dll 1> lib.vcxproj -> C:\Users\Michael\QtProgramme\subdirs_test\src\lib\debug\libd.dll 2> app.vcxproj -> C:\Users\Michael\QtProgramme\subdirs_test\src\app\debug\app.exe Comment: Now lib, app, and lib2 are build in parallel. But somehow MSVS2010 waits for the app to link .... wow! So what your msbuild (Sorry for the German): Fehler beim Buildvorgang. (translates to: Error during building) "c:\Users\Michael\QtProgramme\subdirs_test\subdirs_test.sln" (Standardziel) (1) -> "C:\Users\Michael\QtProgramme\subdirs_test\src\app\app.vcxproj" (Standardziel) (2) -> (Link Ziel) -> LINK : fatal error LNK1104: cannot open file 'libd.lib' [C:\Users\Michael\QtProgramme\subdirs_test\src\app\app.vcxproj] 0 Warnung(en) (Warning(s)) 1 Fehler (Error(s)) = METHOD 4: = - *no* depends - SUBDIRS not in build order - build_pass *inactive* - CONFIG += ordered *inactive* - qmake 5.4.1: == Summary: == qmake -tp vc -r (VS2010) *does* find the dependencies. Even though the order in the SUBDIRS is "wrong": app is before lib and lib2 .... BUT: This only works if build_pass marshalling is not active in the subdir .pro files: # no build_pass marshalling CONFIG(debug, release|debug): TARGET=libd CONFIG(release, release|debug): TARGET=lib # instead of# e.g. # build_pass:CONFIG(debug, release|debug): TARGET=libd # build_pass:CONFIG(release, release|debug): TARGET=lib # In consequence the msbuild and MSVS2010 build ok. The qmake -r (QtCreator) does *not* generate any dependencies with the faulty consequences. Race conditions when building. So: DO NOT USE THIS !!! (Only use it if you will forever stay on the VS2010 IDE and msbuild, but you will miss QtCreator) == nmake == === Makefile === ... sub-src-app: FORCE ... sub-src-lib: FORCE ... sub-src-lib2: FORCE ... Comment: app depends *NOT* on lib and lib2. Not nice .... === nmake / jom=== jom /D *01.01.1601 01:00:00 FORCE *18.04.2015 16:51:47 sub-src-app-make_first *18.04.2015 16:51:47 sub-src-lib-make_first *18.04.2015 16:51:47 sub-src-lib2-make_first cd src\app\ && ( if not exist Makefile C:\Qt_online\5.4\msvc2010_opengl\bin\qmake.exe C:\Users\Michael\QtProgramme\subdirs_test\src\app\app.pro -o Makefile ) && c:\Qt_online\Tools\QtCreator\bin\jom.exe -f Makefile *01.01.1601 01:00:00 FORCE *01.01.1601 01:00:00 release c:\Qt_online\Tools\QtCreator\bin\jom.exe -f Makefile.Release *17.04.2015 21:13:30 release\main.obj cl -c -nologo -Zm200 -Zc:wchar_t -O2 -MD -GR -W3 -w34100 -w34189 -EHsc -DUNICODE -DWIN32 -DQT_NO_DEBUG -DQT_CORE_LIB -DNDEBUG -I"." -I"..\lib" -I"C:\Qt_online\5.4\msvc2010_opengl\include" -I"C:\Qt_online\5.4\msvc2010_opengl\include\QtCore" -I"release" -I"C:\Qt_online\5.4\msvc2010_opengl\mkspecs\win32-msvc2010" -Forelease\ @C:\Users\Michael\AppData\Local\Temp\main.obj.8368.0.jom main.cpp *18.04.2015 16:51:47 release\app.exe link /NOLOGO /DYNAMICBASE /NXCOMPAT /INCREMENTAL:NO /SUBSYSTEM:CONSOLE "/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" /MANIFEST /MANIFESTFILE:release\app.exe.embed.manifest /OUT:release\app.exe @C:\Users\Michael\AppData\Local\Temp\app.exe.8368.483.jom LINK : fatal error LNK1181: cannot open input file 'lib.lib' Comment: all in parallel. Race condition ending up in building app.exe before lib.lib is build!!! == vs2010 == === vs2010 sln === Microsoft Visual Studio Solution File, Format Version 11.00 # Visual Studio 2010 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "app", "C:/Users/Michael/QtProgramme/subdirs_test/src/app\app.vcxproj", "{124A643E-E033-36E6-AA41-AD3E268A86DE}" ProjectSection(ProjectDependencies) = postProject {BBD7705B-EE58-39F5-9DA4-17D53DE9F205} = {BBD7705B-EE58-39F5-9DA4-17D53DE9F205} {E2C38A45-30F3-3D3D-9D94-91EB9244EAF6} = {E2C38A45-30F3-3D3D-9D94-91EB9244EAF6} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "lib", "C:/Users/Michael/QtProgramme/subdirs_test/src/lib\lib.vcxproj", "{BBD7705B-EE58-39F5-9DA4-17D53DE9F205}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "lib2", "C:/Users/Michael/QtProgramme/subdirs_test/src/lib2\lib2.vcxproj", "{E2C38A45-30F3-3D3D-9D94-91EB9244EAF6}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Win32 = Debug|Win32 Release|Win32 = Release|Win32 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {124A643E-E033-36E6-AA41-AD3E268A86DE}.Debug|Win32.ActiveCfg = Debug|Win32 {124A643E-E033-36E6-AA41-AD3E268A86DE}.Debug|Win32.Build.0 = Debug|Win32 {124A643E-E033-36E6-AA41-AD3E268A86DE}.Release|Win32.ActiveCfg = Release|Win32 {124A643E-E033-36E6-AA41-AD3E268A86DE}.Release|Win32.Build.0 = Release|Win32 {BBD7705B-EE58-39F5-9DA4-17D53DE9F205}.Debug|Win32.ActiveCfg = Debug|Win32 {BBD7705B-EE58-39F5-9DA4-17D53DE9F205}.Debug|Win32.Build.0 = Debug|Win32 {BBD7705B-EE58-39F5-9DA4-17D53DE9F205}.Release|Win32.ActiveCfg = Release|Win32 {BBD7705B-EE58-39F5-9DA4-17D53DE9F205}.Release|Win32.Build.0 = Release|Win32 {E2C38A45-30F3-3D3D-9D94-91EB9244EAF6}.Debug|Win32.ActiveCfg = Debug|Win32 {E2C38A45-30F3-3D3D-9D94-91EB9244EAF6}.Debug|Win32.Build.0 = Debug|Win32 {E2C38A45-30F3-3D3D-9D94-91EB9244EAF6}.Release|Win32.ActiveCfg = Release|Win32 {E2C38A45-30F3-3D3D-9D94-91EB9244EAF6}.Release|Win32.Build.0 = Release|Win32 EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution EndGlobalSection GlobalSection(ExtensibilityAddIns) = postSolution EndGlobalSection EndGlobal Comment: Dependencies are there. === Build log: === Rebuild: 1>------ Build started: Project: lib, Configuration: Debug Win32 ------ 2>------ Build started: Project: lib2, Configuration: Debug Win32 ------ 1> lib.cpp 2> lib2.cpp 1> Creating library debug\\libd.lib and object debug\\libd.exp 2> Creating library debug\\lib2d.lib and object debug\\lib2d.exp 2> lib2.vcxproj -> C:\Users\Michael\QtProgramme\subdirs_test\src\lib2\debug\lib2d.dll 1> lib.vcxproj -> C:\Users\Michael\QtProgramme\subdirs_test\src\lib\debug\libd.dll 3>------ Build started: Project: app, Configuration: Debug Win32 ------ 3> main.cpp 3> app.vcxproj -> C:\Users\Michael\QtProgramme\subdirs_test\src\app\debug\app.exe Comment: Now lib, lib2 are build in parallel. App after lib and lib2 is there. = METHOD 5: = - *no* depends - SUBDIRS in build order - build_pass *active* - CONFIG += ordered *active* - qmake 5.4.1: == Summary: == qmake -tp vc -r (VS2010) *does not* find the dependencies. This is due to active build_pass marshalling. # no build_pass marshalling build_pass:CONFIG(debug, release|debug): TARGET=libd build_pass:CONFIG(release, release|debug): TARGET=lib # In consequence the msbuild and MSVS2010 build are in parallel. Which is not what we wanted with option "ordered"! The qmake -r (QtCreator) does *not* generate any clever dependencies. However the build order is given by hand. The building is one after each other for nmake and even for jom. So: Inconsistent behaviour. Do not use it. == nmake == === Makefile === ... sub-src-lib-make_first-ordered: FORCE ... sub-src-lib2-make_first-ordered: sub-src-lib-make_first-ordered FORCE ... sub-src-app-make_first-ordered: sub-src-lib2-make_first-ordered FORCE ... Comment: so ordered builds up a dependency between lib2 and lib that is actually not there: first built lib and lib2 and finally app. So there can be no parallel building of projects here. === nmake / jom=== jom /D *01.01.1601 01:00:00 FORCE *20.04.2015 20:11:37 sub-src-lib2-make_first-ordered cd src\lib2\ && ( if not exist Makefile C:\Qt_online\5.4\msvc2010_opengl\bin\qmake.exe C:\Users\Michael\QtProgramme\subdirs_test\src\lib2\lib2.pro M=5 -o Makefile ) && c:\Qt\qtcreator-3.4.0_20150418\bin\jom.exe -f Makefile *01.01.1601 01:00:00 FORCE *01.01.1601 01:00:00 release c:\Qt\qtcreator-3.4.0_20150418\bin\jom.exe -f Makefile.Release *18.04.2015 19:09:25 release\lib2.obj cl -c -nologo -Zm200 -Zc:wchar_t -O2 -MD -GR -W3 -w34100 -w34189 -EHsc -DUNICODE -DWIN32 -DLIB2_LIBRARY -DQT_NO_DEBUG -DQT_CORE_LIB -DNDEBUG -I"." -I"C:\Qt_online\5.4\msvc2010_opengl\include" -I"C:\Qt_online\5.4\msvc2010_opengl\include\QtCore" -I"release" -I"C:\Qt_online\5.4\msvc2010_opengl\mkspecs\win32-msvc2010" -Forelease\ @C:\Users\Michael\AppData\Local\Temp\lib2.obj.4764.0.jom lib2.cpp *01.01.1601 01:00:00 release\lib2.dll link /NOLOGO /DYNAMICBASE /NXCOMPAT /INCREMENTAL:NO /DLL /SUBSYSTEM:WINDOWS /MANIFEST /MANIFESTFILE:release\lib2.dll.embed.manifest /OUT:release\lib2.dll @C:\Users\Michael\AppData\Local\Temp\lib2.dll.4764.218.jom Creating library release\lib2.lib and object release\lib2.exp mt.exe /nologo /manifest release\lib2.dll.embed.manifest /outputresource:release\lib2.dll;2 *20.04.2015 20:11:37 all *20.04.2015 20:11:37 first *20.04.2015 20:11:37 first *20.04.2015 20:11:37 sub-src-lib-make_first-ordered cd src\lib\ && ( if not exist Makefile C:\Qt_online\5.4\msvc2010_opengl\bin\qmake.exe C:\Users\Michael\QtProgramme\subdirs_test\src\lib\lib.pro M=5 -o Makefile ) && c:\Qt\qtcreator-3.4.0_20150418\bin\jom.exe -f Makefile *01.01.1601 01:00:00 FORCE *01.01.1601 01:00:00 release c:\Qt\qtcreator-3.4.0_20150418\bin\jom.exe -f Makefile.Release *17.04.2015 23:27:06 release\lib.obj cl -c -nologo -Zm200 -Zc:wchar_t -O2 -MD -GR -W3 -w34100 -w34189 -EHsc -DUNICODE -DWIN32 -DLIB_LIBRARY -DQT_NO_DEBUG -DQT_CORE_LIB -DNDEBUG -I"." -I"C:\Qt_online\5.4\msvc2010_opengl\include" -I"C:\Qt_online\5.4\msvc2010_opengl\include\QtCore" -I"release" -I"C:\Qt_online\5.4\msvc2010_opengl\mkspecs\win32-msvc2010" -Forelease\ @C:\Users\Michael\AppData\Local\Temp\lib.obj.9960.15.jom lib.cpp *01.01.1601 01:00:00 release\lib.dll link /NOLOGO /DYNAMICBASE /NXCOMPAT /INCREMENTAL:NO /DLL /SUBSYSTEM:WINDOWS /MANIFEST /MANIFESTFILE:release\lib.dll.embed.manifest /OUT:release\lib.dll @C:\Users\Michael\AppData\Local\Temp\lib.dll.9960.234.jom Creating library release\lib.lib and object release\lib.exp mt.exe /nologo /manifest release\lib.dll.embed.manifest /outputresource:release\lib.dll;2 *20.04.2015 20:11:38 all *20.04.2015 20:11:38 first *20.04.2015 20:11:38 first *20.04.2015 20:11:38 sub-src-app-make_first-ordered cd src\app\ && ( if not exist Makefile C:\Qt_online\5.4\msvc2010_opengl\bin\qmake.exe C:\Users\Michael\QtProgramme\subdirs_test\src\app\app.pro M=5 -o Makefile ) && c:\Qt\qtcreator-3.4.0_20150418\bin\jom.exe -f Makefile *01.01.1601 01:00:00 FORCE *01.01.1601 01:00:00 release c:\Qt\qtcreator-3.4.0_20150418\bin\jom.exe -f Makefile.Release *18.04.2015 19:09:30 release\main.obj cl -c -nologo -Zm200 -Zc:wchar_t -O2 -MD -GR -W3 -w34100 -w34189 -EHsc -DUNICODE -DWIN32 -DQT_NO_DEBUG -DQT_CORE_LIB -DNDEBUG -I"." -I"..\lib" -I"C:\Qt_online\5.4\msvc2010_opengl\include" -I"C:\Qt_online\5.4\msvc2010_opengl\include\QtCore" -I"release" -I"C:\Qt_online\5.4\msvc2010_opengl\mkspecs\win32-msvc2010" -Forelease\ @C:\Users\Michael\AppData\Local\Temp\main.obj.5448.16.jom main.cpp *01.01.1601 01:00:00 release\app.exe link /NOLOGO /DYNAMICBASE /NXCOMPAT /INCREMENTAL:NO /SUBSYSTEM:CONSOLE "/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" /MANIFEST /MANIFESTFILE:release\app.exe.embed.manifest /OUT:release\app.exe @C:\Users\Michael\AppData\Local\Temp\app.exe.5448.484.jom mt.exe /nologo /manifest release\app.exe.embed.manifest /outputresource:release\app.exe;1 *20.04.2015 20:11:38 all *20.04.2015 20:11:38 first *20.04.2015 20:11:38 first *20.04.2015 20:11:38 make_first *20.04.2015 20:11:38 first Comment: all are in sequence, no projects in parallel. == vs2010 == === vs2010 sln === Microsoft Visual Studio Solution File, Format Version 11.00 # Visual Studio 2010 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "lib2", "C:/Users/Michael/QtProgramme/subdirs_test/src/lib2\lib2.vcxproj", "{E2C38A45-30F3-3D3D-9D94-91EB9244EAF6}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "lib", "C:/Users/Michael/QtProgramme/subdirs_test/src/lib\lib.vcxproj", "{BBD7705B-EE58-39F5-9DA4-17D53DE9F205}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "app", "C:/Users/Michael/QtProgramme/subdirs_test/src/app\app.vcxproj", "{124A643E-E033-36E6-AA41-AD3E268A86DE}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Win32 = Debug|Win32 Release|Win32 = Release|Win32 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {E2C38A45-30F3-3D3D-9D94-91EB9244EAF6}.Debug|Win32.ActiveCfg = Debug|Win32 {E2C38A45-30F3-3D3D-9D94-91EB9244EAF6}.Debug|Win32.Build.0 = Debug|Win32 {E2C38A45-30F3-3D3D-9D94-91EB9244EAF6}.Release|Win32.ActiveCfg = Release|Win32 {E2C38A45-30F3-3D3D-9D94-91EB9244EAF6}.Release|Win32.Build.0 = Release|Win32 {BBD7705B-EE58-39F5-9DA4-17D53DE9F205}.Debug|Win32.ActiveCfg = Debug|Win32 {BBD7705B-EE58-39F5-9DA4-17D53DE9F205}.Debug|Win32.Build.0 = Debug|Win32 {BBD7705B-EE58-39F5-9DA4-17D53DE9F205}.Release|Win32.ActiveCfg = Release|Win32 {BBD7705B-EE58-39F5-9DA4-17D53DE9F205}.Release|Win32.Build.0 = Release|Win32 {124A643E-E033-36E6-AA41-AD3E268A86DE}.Debug|Win32.ActiveCfg = Debug|Win32 {124A643E-E033-36E6-AA41-AD3E268A86DE}.Debug|Win32.Build.0 = Debug|Win32 {124A643E-E033-36E6-AA41-AD3E268A86DE}.Release|Win32.ActiveCfg = Release|Win32 {124A643E-E033-36E6-AA41-AD3E268A86DE}.Release|Win32.Build.0 = Release|Win32 EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution EndGlobalSection GlobalSection(ExtensibilityAddIns) = postSolution EndGlobalSection EndGlobal Comment: No dependencies are there. All is build in parallel !!! Not ordered. === Build log: === Rebuild: 1>------ Build started: Project: lib, Configuration: Debug Win32 ------ 2>------ Build started: Project: lib2, Configuration: Debug Win32 ------ 3>------ Build started: Project: app, Configuration: Debug Win32 ------ 1> lib.cpp 2> lib2.cpp 3> main.cpp 1> Creating library debug\\libd.lib and object debug\\libd.exp 2> Creating library debug\\lib2d.lib and object debug\\lib2d.exp 1> lib.vcxproj -> C:\Users\Michael\QtProgramme\subdirs_test\src\lib\debug\libd.dll 2> lib2.vcxproj -> C:\Users\Michael\QtProgramme\subdirs_test\src\lib2\debug\lib2d.dll 3> app.vcxproj -> C:\Users\Michael\QtProgramme\subdirs_test\src\app\debug\app.exe Comment: lib, lib2, and app are build in parallel. This is not what Qt 5 docs tell us about. However somehow VS2010 manages to wait for the libs to be finished before linking the app. Clever .... = METHOD 6: = - *no* depends - SUBDIRS in build order - build_pass *inactive* - CONFIG += ordered *active* - qmake 5.4.1: == Summary: == qmake -tp vc -r (VS2010) *does* find the dependencies. This is due to inactive build_pass marshalling. # no build_pass marshalling CONFIG(debug, release|debug): TARGET=libd CONFIG(release, release|debug): TARGET=lib # instead of # e.g. # build_pass:CONFIG(debug, release|debug): TARGET=libd # build_pass:CONFIG(release, release|debug): TARGET=lib # In consequence the msbuild and MSVS2010 build ok. The qmake -r (QtCreator) does *not* generate any dependencies. However the build order is given by hand. The building is one after each other for nmake and even for jom. So: Inconsistent behaviour. Do not use it. But: at the moment the only method that works for mixed development with Qt 4.8 and 5.4 == nmake == === Makefile === ... sub-src-lib-make_first-ordered: FORCE ... sub-src-lib2-make_first-ordered: sub-src-lib-make_first-ordered FORCE ... sub-src-app-make_first-ordered: sub-src-lib2-make_first-ordered FORCE ... Comment: so ordered builds up a dependency between lib2 and lib that is actually not there: first built lib and lib2 and finally app. So there can be no parallel building of projects here. === nmake / jom=== jom /D *01.01.1601 01:00:00 FORCE *18.04.2015 19:55:14 sub-src-lib-make_first-ordered cd src\lib\ && ( if not exist Makefile C:\Qt_online\5.4\msvc2010_opengl\bin\qmake.exe C:\Users\Michael\QtProgramme\subdirs_test\src\lib\lib.pro -o Makefile ) && c:\Qt_online\Tools\QtCreator\bin\jom.exe -f Makefile *01.01.1601 01:00:00 FORCE *01.01.1601 01:00:00 release c:\Qt_online\Tools\QtCreator\bin\jom.exe -f Makefile.Release *17.04.2015 23:27:06 release\lib.obj cl -c -nologo -Zm200 -Zc:wchar_t -O2 -MD -GR -W3 -w34100 -w34189 -EHsc -DUNICODE -DWIN32 -DLIB_LIBRARY -DQT_NO_DEBUG -DQT_CORE_LIB -DNDEBUG -I"." -I"C:\Qt_online\5.4\msvc2010_opengl\include" -I"C:\Qt_online\5.4\msvc2010_opengl\include\QtCore" -I"release" -I"C:\Qt_online\5.4\msvc2010_opengl\mkspecs\win32-msvc2010" -Forelease\ @C:\Users\Michael\AppData\Local\Temp\lib.obj.4240.0.jom lib.cpp *18.04.2015 19:55:14 release\lib.dll link /NOLOGO /DYNAMICBASE /NXCOMPAT /INCREMENTAL:NO /DLL /SUBSYSTEM:WINDOWS /MANIFEST /MANIFESTFILE:release\lib.dll.embed.manifest /OUT:release\lib.dll @C:\Users\Michael\AppData\Local\Temp\lib.dll.4240.234.jom Creating library release\lib.lib and object release\lib.exp mt.exe /nologo /manifest release\lib.dll.embed.manifest /outputresource:release\lib.dll;2 *18.04.2015 19:55:14 all *18.04.2015 19:55:14 first *18.04.2015 19:55:14 first *18.04.2015 19:55:14 sub-src-lib2-make_first-ordered cd src\lib2\ && ( if not exist Makefile C:\Qt_online\5.4\msvc2010_opengl\bin\qmake.exe C:\Users\Michael\QtProgramme\subdirs_test\src\lib2\lib2.pro -o Makefile ) && c:\Qt_online\Tools\QtCreator\bin\jom.exe -f Makefile *01.01.1601 01:00:00 FORCE *01.01.1601 01:00:00 release c:\Qt_online\Tools\QtCreator\bin\jom.exe -f Makefile.Release *18.04.2015 19:09:25 release\lib2.obj cl -c -nologo -Zm200 -Zc:wchar_t -O2 -MD -GR -W3 -w34100 -w34189 -EHsc -DUNICODE -DWIN32 -DLIB2_LIBRARY -DQT_NO_DEBUG -DQT_CORE_LIB -DNDEBUG -I"." -I"C:\Qt_online\5.4\msvc2010_opengl\include" -I"C:\Qt_online\5.4\msvc2010_opengl\include\QtCore" -I"release" -I"C:\Qt_online\5.4\msvc2010_opengl\mkspecs\win32-msvc2010" -Forelease\ @C:\Users\Michael\AppData\Local\Temp\lib2.obj.5820.16.jom lib2.cpp *18.04.2015 19:55:15 release\lib2.dll link /NOLOGO /DYNAMICBASE /NXCOMPAT /INCREMENTAL:NO /DLL /SUBSYSTEM:WINDOWS /MANIFEST /MANIFESTFILE:release\lib2.dll.embed.manifest /OUT:release\lib2.dll @C:\Users\Michael\AppData\Local\Temp\lib2.dll.5820.234.jom Creating library release\lib2.lib and object release\lib2.exp mt.exe /nologo /manifest release\lib2.dll.embed.manifest /outputresource:release\lib2.dll;2 *18.04.2015 19:55:15 all *18.04.2015 19:55:15 first *18.04.2015 19:55:15 first *18.04.2015 19:55:15 sub-src-app-make_first-ordered cd src\app\ && ( if not exist Makefile C:\Qt_online\5.4\msvc2010_opengl\bin\qmake.exe C:\Users\Michael\QtProgramme\subdirs_test\src\app\app.pro -o Makefile ) && c:\Qt_online\Tools\QtCreator\bin\jom.exe -f Makefile *01.01.1601 01:00:00 FORCE *01.01.1601 01:00:00 release c:\Qt_online\Tools\QtCreator\bin\jom.exe -f Makefile.Release *01.01.1601 01:00:00 release\main.obj cl -c -nologo -Zm200 -Zc:wchar_t -O2 -MD -GR -W3 -w34100 -w34189 -EHsc -DUNICODE -DWIN32 -DQT_NO_DEBUG -DQT_CORE_LIB -DNDEBUG -I"." -I"..\lib" -I"C:\Qt_online\5.4\msvc2010_opengl\include" -I"C:\Qt_online\5.4\msvc2010_opengl\include\QtCore" -I"release" -I"C:\Qt_online\5.4\msvc2010_opengl\mkspecs\win32-msvc2010" -Forelease\ @C:\Users\Michael\AppData\Local\Temp\main.obj.7716.0.jom main.cpp *18.04.2015 19:55:15 release\app.exe link /NOLOGO /DYNAMICBASE /NXCOMPAT /INCREMENTAL:NO /SUBSYSTEM:CONSOLE "/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" /MANIFEST /MANIFESTFILE:release\app.exe.embed.manifest /OUT:release\app.exe @C:\Users\Michael\AppData\Local\Temp\app.exe.7716.499.jom mt.exe /nologo /manifest release\app.exe.embed.manifest /outputresource:release\app.exe;1 *18.04.2015 19:55:15 all *18.04.2015 19:55:15 first *18.04.2015 19:55:15 first *18.04.2015 19:55:15 make_first *18.04.2015 19:55:15 first Comment: all are in sequence, no project in parallel. == vs2010 == === vs2010 sln === Microsoft Visual Studio Solution File, Format Version 11.00 # Visual Studio 2010 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "lib", "C:/Users/Michael/QtProgramme/subdirs_test/src/lib\lib.vcxproj", "{BBD7705B-EE58-39F5-9DA4-17D53DE9F205}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "lib2", "C:/Users/Michael/QtProgramme/subdirs_test/src/lib2\lib2.vcxproj", "{E2C38A45-30F3-3D3D-9D94-91EB9244EAF6}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "app", "C:/Users/Michael/QtProgramme/subdirs_test/src/app\app.vcxproj", "{124A643E-E033-36E6-AA41-AD3E268A86DE}" ProjectSection(ProjectDependencies) = postProject {BBD7705B-EE58-39F5-9DA4-17D53DE9F205} = {BBD7705B-EE58-39F5-9DA4-17D53DE9F205} {E2C38A45-30F3-3D3D-9D94-91EB9244EAF6} = {E2C38A45-30F3-3D3D-9D94-91EB9244EAF6} EndProjectSection EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Win32 = Debug|Win32 Release|Win32 = Release|Win32 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {BBD7705B-EE58-39F5-9DA4-17D53DE9F205}.Debug|Win32.ActiveCfg = Debug|Win32 {BBD7705B-EE58-39F5-9DA4-17D53DE9F205}.Debug|Win32.Build.0 = Debug|Win32 {BBD7705B-EE58-39F5-9DA4-17D53DE9F205}.Release|Win32.ActiveCfg = Release|Win32 {BBD7705B-EE58-39F5-9DA4-17D53DE9F205}.Release|Win32.Build.0 = Release|Win32 {E2C38A45-30F3-3D3D-9D94-91EB9244EAF6}.Debug|Win32.ActiveCfg = Debug|Win32 {E2C38A45-30F3-3D3D-9D94-91EB9244EAF6}.Debug|Win32.Build.0 = Debug|Win32 {E2C38A45-30F3-3D3D-9D94-91EB9244EAF6}.Release|Win32.ActiveCfg = Release|Win32 {E2C38A45-30F3-3D3D-9D94-91EB9244EAF6}.Release|Win32.Build.0 = Release|Win32 {124A643E-E033-36E6-AA41-AD3E268A86DE}.Debug|Win32.ActiveCfg = Debug|Win32 {124A643E-E033-36E6-AA41-AD3E268A86DE}.Debug|Win32.Build.0 = Debug|Win32 {124A643E-E033-36E6-AA41-AD3E268A86DE}.Release|Win32.ActiveCfg = Release|Win32 {124A643E-E033-36E6-AA41-AD3E268A86DE}.Release|Win32.Build.0 = Release|Win32 EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution EndGlobalSection GlobalSection(ExtensibilityAddIns) = postSolution EndGlobalSection EndGlobal Comment: Dependencies are there. === Build log: === Rebuild: 1>------ Rebuild All started: Project: lib2, Configuration: Debug Win32 ------ 2>------ Rebuild All started: Project: lib, Configuration: Debug Win32 ------ 1> lib2.cpp 2> lib.cpp 2> Creating library debug\\libd.lib and object debug\\libd.exp 1> Creating library debug\\lib2d.lib and object debug\\lib2d.exp 1> lib2.vcxproj -> C:\Users\Michael\QtProgramme\subdirs_test\src\lib2\debug\lib2d.dll 2> lib.vcxproj -> C:\Users\Michael\QtProgramme\subdirs_test\src\lib\debug\libd.dll 3>------ Rebuild All started: Project: app, Configuration: Debug Win32 ------ 3> main.cpp 3> app.vcxproj -> C:\Users\Michael\QtProgramme\subdirs_test\src\app\debug\app.exe Comment: Now lib, lib2 are build in parallel. App after lib and lib2 is there. This is not what Qt 5 docs tell us about.