[CMake] Main program not getting rebuilt when library changes.
Brad King
brad.king at kitware.com
Tue Oct 7 12:47:25 EDT 2014
On 10/07/2014 11:18 AM, Bill Greene wrote:
>>cmake --build . --config Debug --target cmTestMain -- -verbosity:diag >log 2>&1
>
> I'll compress it and send it on to you directly.
In the log I see:
> Task "LIB" (TaskId:51)
> Task Parameter:
> Sources=
> cmTestLib.dir\Debug\MySub.obj
> ...
> Outputs for C:\TEMP\PROJECTS\CMAKE_TEST_HOFFMAN\CMTESTLIB\CMTESTLIB.DIR\DEBUG\MYSUB.OBJ: (TaskId:51)
> C:\TEMP\PROJECTS\CMAKE_TEST_HOFFMAN\CMTESTLIB\DEBUG\CMTESTLIB.LIB (TaskId:51)
> Inputs for C:\TEMP\PROJECTS\CMAKE_TEST_HOFFMAN\CMTESTLIB\CMTESTLIB.DIR\DEBUG\MYSUB.OBJ: (TaskId:51)
> C:\WINDOWS\SYSTEM32\TZRES.DLL (TaskId:51)
> C:\TEMP\PROJECTS\CMAKE_TEST_HOFFMAN\CMTESTLIB\CMTESTLIB.DIR\DEBUG\MYSUB.OBJ (TaskId:51)
> Source compilation required: input C:\TEMP\PROJECTS\CMAKE_TEST_HOFFMAN\CMTESTLIB\CMTESTLIB.DIR\DEBUG\MYSUB.OBJ is newer than output C:\TEMP\PROJECTS\CMAKE_TEST_HOFFMAN\CMTESTLIB\DEBUG\CMTESTLIB.LIB. (TaskId:51)
> c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\Lib.exe /OUT:"C:\temp\Projects\cmake_test_hoffman\cmTestLib\Debug\cmTestLib.lib" /NOLOGO cmTestLib.dir\Debug\MySub.obj (TaskId:51)
> Done executing task "LIB". (TaskId:51)
showing the correct re-run of the librarian. Then:
> Task "Link" (TaskId:92)
> Task Parameter:
> Sources=
> cmTestMain.dir\Debug\cmTestMain.exe.embed.manifest.res
> ...
> cmTestMain.dir\Debug\cmTestMain.obj
> ...
> C:\temp\Projects\cmake_test_hoffman\cmTestLib\Debug\cmTestLib.lib
> ...
> ...
> Outputs for C:\TEMP\PROJECTS\CMAKE_TEST_HOFFMAN\CMTESTLIB\DEBUG\CMTESTLIB.LIB|C:\TEMP\PROJECTS\CMAKE_TEST_HOFFMAN\CMTESTMAIN\CMTESTMAIN.DIR\DEBUG\CMTESTMAIN.EXE.EMBED.MANIFEST.RES|C:\TEMP\PROJECTS\CMAKE_TEST_HOFFMAN\CMTESTMAIN\CMTESTMAIN.DIR\DEBUG\CMTESTMAIN.OBJ: (TaskId:92)
> C:\TEMP\PROJECTS\CMAKE_TEST_HOFFMAN\CMTESTMAIN\DEBUG\CMTESTMAIN.ILK (TaskId:92)
> C:\TEMP\PROJECTS\CMAKE_TEST_HOFFMAN\CMTESTMAIN\DEBUG\CMTESTMAIN.EXE (TaskId:92)
> C:\TEMP\PROJECTS\CMAKE_TEST_HOFFMAN\CMTESTMAIN\CMTESTMAIN.DIR\DEBUG\CMTESTMAIN.EXE.INTERMEDIATE.MANIFEST (TaskId:92)
> C:\TEMP\PROJECTS\CMAKE_TEST_HOFFMAN\CMTESTMAIN\DEBUG\CMTESTMAIN.PDB (TaskId:92)
> All outputs are up-to-date. (TaskId:92)
> Done executing task "Link". (TaskId:92)
The list of Inputs is missing. The list of outputs includes the input lib.
Clearly something goes wrong with the evaluation by msbuild. When I run
the same case locally the corresponding location in the log correctly
shows the list of outputs and inputs, and then links.
What version of CMake have you been using to test?
Please try with 3.0.2 and with a nightly binary from:
http://www.cmake.org/files/dev/?C=M;O=D
Thanks,
-Brad
More information about the CMake
mailing list