[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