4

我正在寻找一种方法来编译一些准备好通过 cmake 使用的库,问题是我想使用 VC++ express 2012(第一个允许 x64 开发的 express 版本)但是当我运行 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 没有这个程序。任何解决方法的想法?

4

5 回答 5

8

因此,在文件中,CMakeVS11FindMake.cmake我必须更改注册表项的所有引用

HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\11.0

到关键

HKEY_CURRENT_USER\\Software\\Microsoft\\WDExpress\\11.0_Config

(只需将它们添加为额外提示即可)

于 2012-09-16T05:35:04.983 回答
5

任何已发布的 CMake (2.8.9) 版本目前都不支持 Visual Studio 2012 Express Edition。然而,CMake 开发人员今天刚刚签入代码来解决这个问题。无论何时发布,该修复程序都应该在 CMake 2.8.10 中。

如果您真的需要它,您应该能够获取每晚的 CMake 安装程序,但您可能需要等待 20120919 安装程序发布,因为我不确定此修复程序是否已进入 20120918 安装程序。

(今天为了测试它,我从他们的git 存储库中检查了源代码,切换到分支“next”,配置了旧的 CMake,自己构建了一个新的 CMake,并确认它在 VS 2012 Express 中运行良好。)

于 2012-09-19T06:37:58.780 回答
2

我仍然需要将上面的 Sambatyon 修复应用到 CMakeVS11FindMake.cmake,并且我使用的是 CMake 2.8.10.2。

于 2012-12-26T05:31:01.630 回答
0

其他解决方案不再起作用;使用最新的(截至写作时为桌面版 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

于 2013-10-06T08:23:35.810 回答
-1

我的解决方法:为 2010 年生成,在 VS2012 中“重新加载所有”,然后在解决方案资源管理器中的解决方案上“更新 VC++ 项目”。

但是:我的安装包括活动的 VS 2010、过期的 VS 2012 试用版、活动的 VS 2012 Express。

于 2013-02-18T22:28:12.167 回答