[CMake] Why does CMake 3.9.0 open VS2017 when targeting 2013 after installing 2017... sigh.

Robert Maynard robert.maynard at kitware.com
Wed Aug 15 12:58:32 EDT 2018


The MSVC / CUDA support recently has been very challenging to keep track
of. In general CUDA will only support a single patch release of MSVC, and
given how MSVC 2017 doesn't easily allow rollbacks and has a pretty
aggressive update policy ( compared to older MSVC versions ) causes lots of
pain. This in general has been a community wide MSVC+CUDA issue.

CUDA 8 has zero support for VS2017 (
https://docs.nvidia.com/cuda/archive/8.0/cuda-installation-guide-microsoft-windows/index.html
)
CUDA 9.0 and 9.1 only supports VS 2017 15.0 (
https://docs.nvidia.com/cuda/archive/9.0/cuda-installation-guide-microsoft-windows/index.html,
https://docs.nvidia.com/cuda/archive/9.1/cuda-installation-guide-microsoft-windows/index.html
)
CUDA 9.2 only supports VS 2017 15.0 and 15.6

When using MSVC 2017 and CUDA you will need to specify an explicit host
side compiler with -T version=15.## including the minor version (
https://cmake.org/cmake/help/v3.12/release/3.12.html#id3 ).

On Wed, Aug 15, 2018 at 12:31 PM Brian Davis <bitminer at gmail.com> wrote:

> So here's some more odd bits.  Due to CMake (originally I only wanted to
> upgrade VS)  I have now entered the version upgrade cascade and upgraded to
> cuda 9.0 (yes the one with 4 patches, but the only one that works
> TensorFlow on windows due to cuDNN.dll... sigh)  in hopes to get VS2017 to
> work (hey why not right) and while I am at it why not upgrade CMake to
> 3.12.1 (latest) surely that will work like a charm.   So lets go through
> the config chart:
>
> using CMake 3.12.1 (delete cache each time / start from scratch)
>
> Configure -> VS 2013 -> cuda=9.0 in (optional toolset to use (argument to
> -T)) ->Generate -> Open Project
>
> I get:
>
> The CXX compiler identification is MSVC 18.0.31101.0
>
> The CUDA compiler identification is NVIDIA 9.0.176
>
> Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual
> Studio 12.0/VC/bin/x86_amd64/cl.exe
>
> Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual
> Studio 12.0/VC/bin/x86_amd64/cl.exe -- works
>
> Detecting CXX compiler ABI info
>
> Detecting CXX compiler ABI info - done
>
> Detecting CXX compile features
>
> Detecting CXX compile features - done
>
> Check for working CUDA compiler: C:/Program Files/NVIDIA GPU Computing
> Toolkit/CUDA/v9.0/bin/nvcc.exe
>
> Check for working CUDA compiler: C:/Program Files/NVIDIA GPU Computing
> Toolkit/CUDA/v9.0/bin/nvcc.exe -- works
>
> Detecting CUDA compiler ABI info
>
> Detecting CUDA compiler ABI info - done
>
> Found OpenGL: opengl32
>
> FUORO4D_UTILITY_LIB_DEBUG =
> C:/projects/4DRTProto/4DRTProto/build/x64/Debug/Libraries/4DFUtilities.lib
>
>
> and starts VS 2017 (now mind you *some* of those projects are loaded with
> include_external_msproject (yeah I am guessing people may start to see the
> problem here so loading the correct version of VS may well be important.)
> and as such will be mixed mode cuda 8/9 surly to be a hoot in the future if
> that path were continued.
>
> so it successfully generates and loads something I cannot use at least
> without resorting back to my .bat scripts with env vars set to load VS2013
>
> So hey lets switch back to 8.0
>
> Configure -> VS 2013 -> cuda=8.0 in (optional toolset to use (argument to
> -T)) ->Generate -> Open Project
>
> The CXX compiler identification is MSVC 18.0.31101.0
>
> The CUDA compiler identification is NVIDIA 8.0.60
>
> Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual
> Studio 12.0/VC/bin/x86_amd64/cl.exe
>
> Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual
> Studio 12.0/VC/bin/x86_amd64/cl.exe -- works
>
> Detecting CXX compiler ABI info
>
> Detecting CXX compiler ABI info - done
>
> Detecting CXX compile features
>
> Detecting CXX compile features - done
>
> Check for working CUDA compiler: C:/Program Files/NVIDIA GPU Computing
> Toolkit/CUDA/v8.0/bin/nvcc.exe
>
> Check for working CUDA compiler: C:/Program Files/NVIDIA GPU Computing
> Toolkit/CUDA/v8.0/bin/nvcc.exe -- works
>
> Detecting CUDA compiler ABI info
>
> Detecting CUDA compiler ABI info - done
>
> Found OpenGL: opengl32
>
> FUORO4D_UTILITY_LIB_DEBUG =
> C:/projects/4DRTProto/4DRTProto/build/x64/Debug/Libraries/4DFUtilities.lib
>
> Configuring done
>
> VS2017 loads again and complains about one or more project files were not
> loaded correctly.  No surprise there.
>
>
> Configure -> VS 2017 -> cuda=8.0 in (optional toolset to use (argument to
> -T)) ->Generate -> Open Project
>
> Selecting Windows SDK version 10.0.17134.0 to target Windows 10.0.16299.
>
> The CXX compiler identification is MSVC 19.14.26433.0
>
> The CUDA compiler identification is unknown
>
> Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual
> Studio/2017/Community/VC/Tools/MSVC/14.14.26428/bin/Hostx86/x64/cl.exe
>
> Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual
> Studio/2017/Community/VC/Tools/MSVC/14.14.26428/bin/Hostx86/x64/cl.exe --
> works
>
> Detecting CXX compiler ABI info
>
> Detecting CXX compiler ABI info - done
>
> Detecting CXX compile features
>
> Detecting CXX compile features - done
>
> CMake Error at CMakeLists.txt:14 (PROJECT):
> No CMAKE_CUDA_COMPILER could be found.
>
> Hmm that ain't never going to work.  I installed 9.0 after VS2017 install
> however.
>
>
> Configure -> VS 2017 -> cuda=9.0 in (optional toolset to use (argument to
> -T)) ->Generate -> Open Project
>
> Selecting Windows SDK version 10.0.17134.0 to target Windows 10.0.16299.
>
> The CXX compiler identification is MSVC 19.14.26433.0
>
> The CUDA compiler identification is unknown
>
> Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual
> Studio/2017/Community/VC/Tools/MSVC/14.14.26428/bin/Hostx86/x64/cl.exe
>
> Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual
> Studio/2017/Community/VC/Tools/MSVC/14.14.26428/bin/Hostx86/x64/cl.exe --
> works
>
> Detecting CXX compiler ABI info
>
> Detecting CXX compiler ABI info - done
>
> Detecting CXX compile features
>
> Detecting CXX compile features - done
>
> CMake Error at CMakeLists.txt:14 (PROJECT):
> No CMAKE_CUDA_COMPILER could be found.
>
> Ditto for that attempt
>
> Configure -> VS 2017 -> leave blank in desperate hope CMake will figure it
> out  in (optional toolset to use (argument to -T)) ->Generate -> Open
> Project
>
>
> Selecting Windows SDK version 10.0.17134.0 to target Windows 10.0.16299.
>
> The CXX compiler identification is MSVC 19.14.26433.0
>
> The CUDA compiler identification is unknown
>
> Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual
> Studio/2017/Community/VC/Tools/MSVC/14.14.26428/bin/Hostx86/x64/cl.exe
>
> Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual
> Studio/2017/Community/VC/Tools/MSVC/14.14.26428/bin/Hostx86/x64/cl.exe --
> works
>
> Detecting CXX compiler ABI info
>
> Detecting CXX compiler ABI info - done
>
> Detecting CXX compile features
>
> Detecting CXX compile features - done
>
> CMake Error at CMakeLists.txt:14 (PROJECT):
> No CMAKE_CUDA_COMPILER could be found.
>
> Ditto for that attempt
>
> Aces! This sure is awesome.
>
>
>
>
> On Wed, Aug 15, 2018 at 10:45 AM, Brian Davis <bitminer at gmail.com> wrote:
>
>> Yes I know all about the bit about having to reinstall CUDA (been using
>> it since the 2.0 days) for 2017 (using VS since 2005).... if only I could
>> get CMake to call VS2013... ya know the version that already has cuda 8.0
>> installed and configured and the extensions from C:\Program Files\NVIDIA
>> GPU Computing
>> Toolkit\CUDA\v8.0\extras\visual_studio_integration\MSBuildExtensions that
>> get installed
>>
>> Can CMake defer to what the user ultimately wants? .. say the correct
>> version of VS.  I mean that is what I thought I specified.
>>
>> I had thought when I upgraded to 3.8/3.9 or whatever at the time that ...
>> Oh great they now have an open project button... .maybe that will allow me
>> to not have to generate .bat scripts to load VS (mind you my .bat script
>> generation in CMake could actually tell me which correct version to load so
>> these kinds of things are possible) with the env vars I set and set them in
>> CMake and have CMake load VS (again correct version) with said env.  It
>> worked like a charm... well for a while anyway as it does with anything in
>> the tech world.  I certainly feel like I have upgraded.
>>
>>
>> On Wed, Aug 15, 2018 at 9:48 AM, Robert Maynard <
>> robert.maynard at kitware.com> wrote:
>>
>>> > cannot find CUDA likely as CUDA was not installed after 2017
>>>
>>> The CUDA language support requires the CUDA MSBUILD extensions, which
>>> will require you to run the CUDA installer again ( it only installs
>>> the msbuild extensions for versions that are currently installed ).
>>>
>>> >  I would like it to load 2013 after being told to generate Visual
>>> Studio 2013 project files.
>>>
>>>  As Hendrik stated CMake defers to the windows shell/explorer for
>>> opening solution files.
>>> On Tue, Aug 14, 2018 at 7:27 PM Brian Davis <bitminer at gmail.com> wrote:
>>> >
>>> >
>>> > It also cannot find CUDA likely as CUDA was not installed after 2017.
>>> I would like it to load 2013 after being told to generate Visual Studio
>>> 2013 project files.  Is this difficult to ask fo Kitware?  I am sure there
>>> are certainly some shenanigans like path or VS2017 hooking calls to 2013
>>> tools or the like all of which I am sure make sens to a cubite in the
>>> bowels of the MS machine.  VS loaded 2017 and vs 2013  proj files then
>>> promptly had problems searching files, compiling stale targets and the
>>> like.  So while VS2017 make "hook" 2013 tools it certainly can't do any
>>> thing useful with them IME.  Is there a Meta buld tool (goop generator)
>>> that will build goop for a target goop reader then call said target goop
>>> reader (of correct specified version) to read goop and compile my code?
>>> sigh.
>>> >
>>> > --
>>> >
>>> > 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/opensource/opensource.html
>>> >
>>> > Follow this link to subscribe/unsubscribe:
>>> > https://cmake.org/mailman/listinfo/cmake
>>>
>>
>>
>>
>> --
>> Brian J. Davis
>>
>
>
>
> --
> Brian J. Davis
> --
>
> 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/opensource/opensource.html
>
> Follow this link to subscribe/unsubscribe:
> https://cmake.org/mailman/listinfo/cmake
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://cmake.org/pipermail/cmake/attachments/20180815/ed0d98c4/attachment-0001.html>


More information about the CMake mailing list