[CMake] Did anyone manage to get incremental linking working with NMake generator?

Gabriel Petrovay gabipetrovay at gmail.com
Wed Dec 8 12:53:39 EST 2010


Hi Bill,

First just by running "cmake -E vs_link_exe" CMake crashes on my
machine (CMake 2.8.2, Win7): "cmake.exe stopped working" "Close the
program/Debug the program". Is this the right behaviour?

Then, below is my verbose output. I see no /INCREMENTAL:YES in my link
command. How did you get this in your link command? (This is anyway
the default option.)
The problem is that calling mt.exe after linking modifies the
timestamp of the dll. Therefore the next run of nmake will trigger a
full link as the below output shows:
LINK : zorba_simplestore.dll not found or not built by the last
incremental link; performing full link
But I already had the dll built by a previous build.

Any thoughts?
Thanks!

> nmake zorba_simplestore/fast VERBOSE=1
----------------------------------------
Microsoft (R) Program Maintenance Utility Version 10.00.30319.01
Copyright (C) Microsoft Corporation.  All rights reserved.

        "C:\Program Files\Microsoft Visual Studio
10.0\VC\BIN\nmake.exe" -f
src\CMakeFiles\zorba_simplestore.dir\build.make /nologo -
     src\CMakeFiles\zorba_simplestore.dir\build
        "C:\Program Files\CMake 2.8\bin\cmake.exe" -E
cmake_progress_report
C:\Users\Gabriel\Work\28msec\zorba\builds\debug10\CMakeFiles
Building CXX object
src/CMakeFiles/zorba_simplestore.dir/debugger/debugger_clientimpl.obj
        cd C:\Users\Gabriel\Work\28msec\zorba\builds\debug10\src
        C:\PROGRA~1\MICROS~2.0\VC\bin\cl.exe
@C:\Users\Gabriel\AppData\Local\Temp\nm82B8.tmp
cl : Command line warning D9035 : option 'Wp64' has been deprecated
and will be removed in a future release
debugger_clientimpl.cpp
        cd C:\Users\Gabriel\Work\28msec\zorba\builds\debug10
Linking CXX shared library zorba_simplestore.dll
        cd C:\Users\Gabriel\Work\28msec\zorba\builds\debug10\src
        "C:\Program Files\CMake 2.8\bin\cmake.exe" -E vs_link_dll
C:\PROGRA~1\MICROS~2.0\VC\bin\link.exe /nologo
@CMakeFiles\zorba_simplestore.dir\objects1.rsp
@C:\Users\Gabriel\AppData\Local\Temp\nm8F94.tmp
Visual Studio Non-Incremental Link
LINK:
C:\PROGRA~1\MICROS~2.0\VC\bin\link.exe /nologo
@CMakeFiles\zorba_simplestore.dir\objects1.rsp
/out:zorba_simplestore.dll /implib:zorba_simplestore.lib
/pdb:C:\Users\Gabriel\Work\28msec\zorba\builds\debug10\src\zorba_simplestore.pdb
/dll /version:1.5 /STACK:10000000 /machine:X86 /debug
C:\Users\Gabriel\Work\28msec\tools\curl_7_19_3\libcurl_imp.lib
C:\Users\Gabriel\Work\28msec\tools\tidy\lib\tidy.lib
C:\Users\Gabriel\Work\28msec\tools\iconv\lib\iconv.lib
C:\Users\Gabriel\Work\28msec\tools\icu_4_4_1_src\lib\icuuc.lib
C:\Users\Gabriel\Work\28msec\tools\icu_4_4_1_src\lib\icuin.lib
C:\Users\Gabriel\Work\28msec\tools\icu_4_4_1_src\lib\icudt.lib
C:\Users\Gabriel\Work\28msec\tools\libxml2\lib\libxml2.lib
C:\Users\Gabriel\Work\28msec\tools\xerces-c-3.1.1-x86-windows-vc-10.0\lib\xerces-c_3.lib
C:\Users\Gabriel\Work\28msec\tools\libxml2\lib\libxml2.lib
..\external\json\json.lib wsock32.lib
C:\Users\Gabriel\Work\28msec\tools\xerces-c-3.1.1-x86-windows-vc-10.0\lib\xerces-c_3.lib
wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib
ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib /MANIFEST
LINK : zorba_simplestore.dll not found or not built by the last
incremental link; performing full link
   Creating library zorba_simplestore.lib and object zorba_simplestore.exp
MT:
C:/Program Files/Microsoft SDKs/Windows/v7.0A/bin/mt.exe /nologo
/manifest zorba_simplestore.dll.manifest
/outputresource:zorba_simplestore.dll;#2
        cd C:\Users\Gabriel\Work\28msec\zorba\builds\debug10
----------------------------------------




On Wed, Dec 8, 2010 at 6:01 PM, Bill Hoffman <bill.hoffman at kitware.com> wrote:
> On 12/8/2010 10:36 AM, Gabriel Petrovay wrote:
>>
>> Hi,
>>
>> Does anyone have some experience with the NMake generator and with
>> incremental linking. There seems to be a bug in CMake. Currently NMake
>> generator seems to generate build files that are not compatible with
>> incremental linking of libraries.
>>
>> I posted the details here:
>> http://www.cmake.org/pipermail/cmake/2010-December/041181.html
>>
>> Thanks!
>>
>
> That actually should work with CMake, I spent some time making sure it would
> work.
>
> You should see CMake running the link step via cmake -E vs_link_exe. That
> script does this:
> -> Link the binary to generate the MyApp.exe.manifest file.
> -> Convert the manifest to a resource file.
> -> Re-link (incrementally) to embed the manifest resource into the binary."
>
>
> Linking CXX executable Simple.exe
>        "C:\Program Files (x86)\CMake 2.8\bin\cmake.exe" -E vs_link_exe
> C:\PROGRA~2\MICROS~1.0\VC\bin\cl.exe  /nologo
> @CMakeFiles\Simple.dir\objects1.rsp @.\nmCC8E.tmp
> Visual Studio Incremental Link with embeded manifests
> Create Simple.exe.resource.txt
> RC Pass 1:
> C:/Program Files/Microsoft SDKs/Windows/v6.0A/Bin/RC.Exe
> /foSimple.exe.embed.manifest.res Simple.exe.resource.txt
> LINK Pass 1:
> C:\PROGRA~2\MICROS~1.0\VC\bin\cl.exe /nologo
> @CMakeFiles\Simple.dir\objects1.rsp /DWIN32 /D_WINDOWS /W3 /Zm1000 /EHsc /GR
> /D_DEBUG /MDd /Zi /Ob0 /Od /RTC1 /FeSimple.exe /FdC:\Users\hoffman\Work\My
> Builds\CMake\Tests\Simple\b\Simple.pdb -link /implib:Simple.lib /version:0.0
> /STACK:10000000 /machine:X86 /debug /INCREMENTAL:YES /subsystem:console
> simpleLib.lib kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib
> ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib /MANIFEST
> /MANIFESTFILE:Simple.exe.intermediate.manifest Simple.exe.embed.manifest.res
> LINK : Simple.exe not found or not built by the last incremental link;
> performing full link
> MT:
> C:/Program Files/Microsoft SDKs/Windows/v6.0A/Bin/mt.exe /nologo
> /out:Simple.exe.embed.manifest /notify_update /manifest
> Simple.exe.intermediate.manifest
>        "C:\Program Files (x86)\CMake 2.8\bin\cmake.exe" -E
> cmake_progress_report "C:\Users\hoffman\Work\My
> Builds\CMake\Tests\Simple\b\CMakeFiles"  1
> [100%] Built target Simple
>        "C:\Program Files (x86)\CMake 2.8\bin\cmake.exe" -E
> cmake_progress_start "C:\Users\hoffman\Work\My
> Builds\CMake\Tests\Simple\b\CMakeFiles"
>
>
> -Bill
> _______________________________________________
> Powered by www.kitware.com
>
> Visit other Kitware open-source projects at
> http://www.kitware.com/opensource/opensource.html
>
> Please keep messages on-topic and check the CMake FAQ at:
> http://www.cmake.org/Wiki/CMake_FAQ
>
> Follow this link to subscribe/unsubscribe:
> http://www.cmake.org/mailman/listinfo/cmake
>



-- 
MSc Gabriel Petrovay
Mobile: +41(0)787978034
www.28msec.com


More information about the CMake mailing list