[CMake] Manifest issues and CMakeVerifyManifest

Bill Hoffman bill.hoffman at kitware.com
Tue Feb 8 09:38:33 EST 2011


On 2/8/2011 9:01 AM, Olivier Pierard wrote:
> Dear all,
>
> When developing on Windows, I think everything works fine and it be
> definitely packaged when ...BOUM...  someone reports a configuration
> which fails to start the program !
>
> So, some questions:
>
> 1°) I started to try the CMakeVerifyManifest which detects effectively
> some errors.  Manifest file contains references to Microsoft.VC90.CRT
> and Microsoft.VC80.CRT.  Is this really non-compatible ?  If answer is
> no, how could I detect which library (.lib, no dll) is using VC80 ?  I'm
> using VisualStudio 2008 SP1, Windows Vista SP1, cmake/cpack 2.8.0,
> generate 64-bits executable and soft fails to run on Windows XP 64 bits
> SP2 with Visual Studio 2008 SP1 packages installed for x86 ad x64.
>
You should be able to run grep or some other tool on your dlls and find 
the ones that have the reference.

> 2°) I then decided to try it on another executable which seems to be
> always working and an error is also reported !  But I don't really
> understand it as everything seems to be OK for me.  I'm wondering if the
> script distinguishes well the VC90.CRT and VC90.OpenMP ?
Looks like it can not find the OpenMP manifest file.
>
> Thanks for your help
>
> Olivier
>
> Log of CMakeVerifyManifest in case 2:
>
> Versions found in E:/64/src/GUI/bin/Release/morfeogui.exe.manifest:
> <?xml version='1.0' encoding='UTF-8' standalone='yes'?>
> <assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'>
>    <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
>      <security>
>        <requestedPrivileges>
>          <requestedExecutionLevel level='asInvoker' uiAccess='false' />
>        </requestedPrivileges>
>      </security>
>    </trustInfo>
>    <dependency>
>      <dependentAssembly>
>        <assemblyIdentity type='win32' name='Microsoft.VC90.CRT'
> version='9.0.21022.8' processorArchitecture='amd64'
> publicKeyToken='1fc8b3b9a1e18e3b' />
>      </dependentAssembly>
>    </dependency>
>    <dependency>
>      <dependentAssembly>
>        <assemblyIdentity type='win32' name='Microsoft.VC90.OpenMP'
> version='9.0.21022.8' processorArchitecture='amd64'
> publicKeyToken='1fc8b3b9a1e18e3b' />
>      </dependentAssembly>
>    </dependency>
> </assembly>
>
> ERROR: E:/64/src/GUI/bin/Release/morfeogui.exe uses 9.0.21022.8 not
> found in shipped manifests:[<?xml version='1.0' encoding='UTF-8'
> standalone='yes'?>
> <assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'>
>    <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
>      <security>
>        <requestedPrivileges>
>          <requestedExecutionLevel level='asInvoker' uiAccess='false' />
>        </requestedPrivileges>
>      </security>
>    </trustInfo>
>    <dependency>
>      <dependentAssembly>
>        <assemblyIdentity type='win32' name='Microsoft.VC90.CRT'
> version='9.0.21022.8' processorArchitecture='amd64'
> publicKeyToken='1fc8b3b9a1e18e3b' />
>      </dependentAssembly>
>    </dependency>
>    <dependency>
>      <dependentAssembly>
>        <assemblyIdentity type='win32' name='Microsoft.VC90.OpenMP'
> version='9.0.21022.8' processorArchitecture='amd64'
> publicKeyToken='1fc8b3b9a1e18e3b' />
>      </dependentAssembly>
>    </dependency>
> </assembly>
> ].
> CMake Error at C:/Program Files (x86)/CMake
> 2.8/share/cmake-2.8/Modules/CMakeVerifyManifest.cmake:113 (message):
>    This distribution embeds dll versions that it does not ship, and may not
>    work on other machines.
>

This blog I wrote might help you:

http://kitware.com/blog/home/post/4

 From the error message it looks like you are not shipping the manifest 
for Microsoft.VC90.OpenMP.   I don't think that is something that CMake 
knows how to install.

-Bill




More information about the CMake mailing list