[CMake] Fwd: Re: VC2015 and Windows 7 compatibility

Luis Caro Campos julius.caro at gmail.com
Thu Sep 21 10:08:40 EDT 2017


Hi Gonzalo,

Since you are using ninja files and building from command line, I suspect
you are using a Visual Studio 2015 command prompt.

It may be beneficial to initialise a command prompt to specifically target
Windows 8.1 SDK which is the one to go to target Windows 7.

First, make sure Windows 8.1 SDK is installed (can't remember but it is
likely that the visual studio 2015 installer can help).

Then open a command prompt and run the vcvarsall.bat passing arguments "x64
8.1" if you are building on a 64-bit install of windows targeting 64-bit
windows.

Then run cmake and ninja from there, and I suspect there's a chance the
produced binaries will no longer depend on those files. Like you mentioned,
those files are not redistributable by developers.

My vcvarsall.bat is located at:
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC

Regards,
Luis



On 20 Sep 2017 15:28, "Gonzalo Garramuño" <ggarra13 at gmail.com> wrote:

> El 19/09/2017 a las 13:57, Elvis Stansvik escribió:
>
>>
>> I also build on Win 8.1/MSVC 2015, targeting Windows 7+, and what I do
>> is basically:
>>
>> if(WIN32)
>>      add_definitions(/D_WIN32_WINNT=0x0601) # Target Windows 7+
>>
>>      set(CMAKE_INSTALL_SYSTEM_RUNTIME_DESTINATION ".")
>>      set(CMAKE_INSTALL_UCRT_LIBRARIES ON)
>>      include(InstallRequiredSystemLibraries)
>> endif()
>>
>> The /D_WIN32_WINNT=0x0601 is what ensures Windows 7 compatibility and
>> CMAKE_INSTALL_UCRT_LIBRARIES is what ensures Universal CRT libraries
>> like the one you mentioned gets installed alongside the application.
>>
>> You'll end up with a truckload of such small DLLs, but AFAIK this is
>> what you need to do if you want to do app-local deployment of the
>> Universal CRT.
>>
>> Hope that helps.
>>
>> Elvis
>>
>
> I followed your advice and got a bunch of api-ms-* files in the install
> directory when I packed it.
> However, for my program, there were still 3 DLLs missing:
> api-ms-win-core-libraryloader-l1-2-0.dll,
> api-ms-win-core-sysinfo-l1-2-1.dll,
> api-ms-win-core-processthreads-l1-1-2.dll.
>
> Not sure if this is a bug in cmake.  Not sure how cmake gets those
> dependencies.
>
> --
> Gonzalo Garramuño
>
> --
>
> Powered by www.kitware.com
>
> Please keep messages on-topic and check the CMake FAQ at:
> http://www.cmake.org/Wiki/CMake_FAQ
>
> Kitware offers various services to support the CMake community. For more
> information on each offering, please visit:
>
> CMake Support: http://cmake.org/cmake/help/support.html
> CMake Consulting: http://cmake.org/cmake/help/consulting.html
> CMake Training Courses: http://cmake.org/cmake/help/training.html
>
> Visit other Kitware open-source projects at http://www.kitware.com/opensou
> rce/opensource.html
>
> Follow this link to subscribe/unsubscribe:
> http://public.kitware.com/mailman/listinfo/cmake
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/cmake/attachments/20170921/41350c78/attachment.html>


More information about the CMake mailing list