Visual Studio Express 2012 и Cmake
Я ищу способ компиляции некоторых библиотек, которые готовы к использованию через cmake, проблема в том, что я хотел бы использовать VC++ Express 2012 (первая версия Express, позволяющая разработку для x64), однако, когда я запускаю cmake, я продолжаю получать это:
CMake Error: CMake was unable to find a build program corresponding to "Visual Studio 11". CMAKE_MAKE_PROGRAM is not set. You probably need to select a different build tool.
CMake Error: Could not find cmake module file:C:/Users/Alexander Rojas/workspace/jthread-1.3.1/build/CMakeFiles/CMakeCCompiler.cmake
CMake Error: Could not find cmake module file:C:/Users/Alexander Rojas/workspace/jthread-1.3.1/build/CMakeFiles/CMakeCXXCompiler.cmake
Configuring incomplete, errors occurred!
Я обнаружил, что этот путь - путь к devenv.exe, но этот новый vc не имеет этой программы. Есть идеи для обхода?
5 ответов
Итак, в файле CMakeVS11FindMake.cmake
Мне пришлось изменить все ссылки на раздел реестра
HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\11.0
к ключу
HKEY_CURRENT_USER\\Software\\Microsoft\\WDExpress\\11.0_Config
(просто добавив их как дополнительный совет будет работать)
Visual Studio 2012 Express Edition в настоящее время не поддерживается ни в одной выпущенной версии CMake (2.8.9). Однако разработчики CMake только сегодня зарегистрировались в коде, чтобы решить проблему. Исправление должно быть в CMake 2.8.10 всякий раз, когда оно выпущено.
Если вам действительно это нужно раньше, вы сможете получить ночные установщики CMake, но вам может понадобиться путь до публикации установщиков 20120919, так как я не уверен, попало ли это исправление в установщики 20120918.
(Чтобы проверить это сегодня, я извлек исходный код из их репозитория git, переключился на ветку "next", настроил старый CMake, собрал себе новый CMake и подтвердил, что он работает отлично VS 2012 Express.)
Мне все еще нужно было применить исправление Sambatyon, описанное выше, к CMakeVS11FindMake.cmake, и я использую CMake 2.8.10.2.
Другие решения больше не работают; с последней версией (Express 2012 для настольных компьютеров на момент написания) вам может потребоваться изменить:
C:\Program Files (x86)\CMake 2.8\share\cmake-2.8\Modules\CMakeVS12FindMake.cmake
Чтобы прочитать что-то вроде:
#=============================================================================
# Copyright 2007-2013 Kitware, Inc.
#
# Distributed under the OSI-approved BSD License (the "License");
# see accompanying file Copyright.txt for details.
#
# This software is distributed WITHOUT ANY WARRANTY; without even the
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# See the License for more information.
#=============================================================================
# (To distribute this file outside of CMake, substitute the full
# License text for the above reference.)
# Always use MSBuild because:
# - devenv treats command-line builds as recently-loaded projects in the IDE
# - devenv does not appear to support non-standard platform toolsets
# If we need devenv for Intel Fortran in the future we should add
# a special case when Fortran is enabled.
find_program(CMAKE_MAKE_PROGRAM
NAMES MSBuild
HINTS "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\MSBuild\\ToolsVersions\\4.0;MSBuildToolsPath]" <--- Change this line.
)
message("Found: ${CMAKE_MAKE_PROGRAM}")
mark_as_advanced(CMAKE_MAKE_PROGRAM)
set(MSVC12 1)
set(MSVC_VERSION 1800)
Это для cmake 2.8.11.2
Изменить: Обратите внимание, в частности, это касается пакета VS2012, а не кандидата на выпуск VS2013 или будущей версии VS2013, где правильные ToolsVersions равен \12.0
Моя работа: создать в 2010 году "Обновить все" в VS2012, а затем "Обновить проекты VC++" в решении в обозревателе решений.
Однако: Моя установка включает активную VS 2010, пробную версию VS 2012 с истекшим сроком действия, активную VS 2012 Express.