[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