web-dev-qa-db-ja.com

CMake:使用するVisual C ++のバージョンを指定する方法は?

Visual Studioの複数のバージョンがインストールされています(2010、2012、2015の試用版)。

CMakeに特定のVSバージョンのメイクファイルを生成させるにはどうすればよいですか?デフォルトでは、VS2015用に生成されます。

17
Pietro

最初に、 generators でCMakeバージョンがサポートしているもの(およびそれらの名前)を確認できます。

_> cmake.exe --help
...
The following generators are available on this platform:
...
  Visual Studio 11 2012 [Arch] = Generates Visual Studio 2012 project files.
                                 Optional [Arch] can be "Win64" or "ARM".    
...
_

それからあなたはジェネレーターを与えることができます

  1. _cmake.exe -G "Visual Studio 11" .._(短縮名)
  2. _cmake.exe -G "Visual Studio 11 2012" .._(フルネーム)

明快さのため、私は後者を好みます。そして、私は通常、ビルドスクリプトラッパーでこの呼び出しを行います。

_@ECHO off
IF NOT EXIST "BuildDir\*.sln" (
    cmake -H"." -B"BuildDir" -G"Visual Studio 11 2012"
)
cmake --build "BuildDir" --target "ALL_BUILD" --config "Release"
_

フルネームは、キャッシュされた内部CMake変数名 _CMAKE_GENERATOR_ に転送されます。したがって、上記の呼び出しは次と同等です。

  1. _cmake -DCMAKE_GENERATOR="Visual Studio 11 2012" .._

これは興味深い可能性を与えてくれます。 _PreLoad.cmake_と呼ばれるファイルをメインの_CMakeLists.txt_ファイルと並列に配置すると、デフォルト(使用可能な場合)にプロジェクトを強制的に割り当てることができます。

  1. _cmake.exe .._

    PreLoad.cmake

    _if (NOT "$ENV{VS110COMNTOOLS}" STREQUAL "")
        set(CMAKE_GENERATOR "Visual Studio 11 2012" CACHE INTERNAL "Name of generator.")
    endif()
    _

_-T <toolset-name>_または_-A <platform-name>_オプションも追加する必要がある場合があります。

  1. _cmake.exe -G "Visual Studio 10" -T "v90" .._

そして最後に、あなたが本当にコンパイラにのみ興味があるなら

  1. "\Program Files (x86)\Microsoft Visual Studio 11.0\VC\vcvarsall.bat"

    _cmake.exe -G "NMake Makefiles" .._


参考文献

25
Florian
cmake -G "Visual Studio 12" ..\MyProject
0
Pietro