4

cmake で使用できるようになったいくつかのライブラリをコンパイルする方法を探しています。問題は、VC++ Express 2012 (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 にはこのプログラムがありません。回避策のアイデアはありますか?

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

Visual Studio 2012 Express Edition は、現在リリースされている CMake (2.8.9) のどのバージョンでもサポートされていません。しかし、CMake 開発者は今日、コードをチェックインして問題を修正しました。修正は、CMake 2.8.10 がリリースされるたびに含まれているはずです。

本当にすぐに必要な場合は、夜間の CMake インストーラーを取得できるはずですが、この修正が 20120918 インストーラーに組み込まれたかどうかわからないため、20120919 インストーラーが投稿されるまで待つ必要があるかもしれません。

(今日テストするために、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

他の解決策はもう機能しません。最新(執筆時点ではデスクトップ用のエクスプレス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用です

編集:特にこれは、VS2013リリース候補、または正しいToolsVersionsが\ 12.0であるVS2013の将来のバージョンではなく、VS2012バンドルに関するものであることに注意してください

于 2013-10-06T08:23:35.810 に答える
-1

私の回避策: 2010 用に生成し、VS2012 で「すべてをリロード」してから、ソリューション エクスプローラーのソリューションで「VC++ プロジェクトを更新」します。

ただし、私のインストールは、アクティブな VS 2010、期限切れの VS 2012 試用版、アクティブな VS 2012 Express で構成されています。

于 2013-02-18T22:28:12.167 に答える