web-dev-qa-db-fra.com

CMake: échec de l'exécution de la commande MSBuild: MSBuild.exe

J'essaie de construire FIAT en utilisant l'interface graphique CMake sous Windows 10. 

CMake Error at CMakeLists.txt:3 (project):
  Failed to run MSBuild command:

    MSBuild.exe

  to get the value of VCTargetsPath:
Configuring incomplete, errors occurred!

J'ai configuré CMake pour utiliser le compilateur Visual Studio 15 2017.

Comment puis-je réparer cela? 

Si nécessaire, voici le fichier CMakeLists.txt

cmake_minimum_required(VERSION 3.2)
include(CheckCXXCompilerFlag)
project(FIAT CXX)

set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)

if(CHECK_CXX_COMPILER_USED1)
# Using Visual Studio C++
elseif("${CMAKE_CXX_COMPILER_ID}x" STREQUAL "MSVCx")
# Using Intel C++
elseif("${CMAKE_CXX_COMPILER_ID}x" STREQUAL "Intelx")
else(CHECK_CXX_COMPILER_USED1)
    # GCC or Clang
    # At least C++11
    CHECK_CXX_COMPILER_FLAG("-std=c++17" COMPILER_SUPPORTS_CXX17)
    CHECK_CXX_COMPILER_FLAG("-std=c++1z" COMPILER_SUPPORTS_CXX1Z)
    CHECK_CXX_COMPILER_FLAG("-std=c++14" COMPILER_SUPPORTS_CXX14)
    CHECK_CXX_COMPILER_FLAG("-std=c++1y" COMPILER_SUPPORTS_CXX1Y)
    CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11)
    if(COMPILER_SUPPORTS_CXX17)
        set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++17")
    elseif(COMPILER_SUPPORTS_CXX1Z)
        set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++1z")
    elseif(COMPILER_SUPPORTS_CXX14)
        set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14")
    elseif(COMPILER_SUPPORTS_CXX1Y)
        set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++1y")
    elseif(COMPILER_SUPPORTS_CXX11)
        set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
    else(COMPILER_SUPPORTS_CXX17)
        message(STATUS "The compiler ${CMAKE_CXX_COMPILER} has no C++11 support. Please use a different C++ compiler.")
    endif(COMPILER_SUPPORTS_CXX17)

    if(CHECK_CXX_COMPILER_USED2)
    elseif("${CMAKE_CXX_COMPILER_ID}x" MATCHES "Clangx")
        # Using Clang
        set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -Weverything -Wno-c++98-compat -Wno-c++98-compat-pedantic -Wno-global-constructors")
    elseif("${CMAKE_CXX_COMPILER_ID}x" STREQUAL "GNUx")
        # Using GCC
        set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -pedantic")
    endif(CHECK_CXX_COMPILER_USED2)
endif(CHECK_CXX_COMPILER_USED1)

#OpenCV
FIND_PACKAGE(OpenCV REQUIRED core imgproc highgui imgcodecs)
if(OpenCV_Found)
    INCLUDE_DIRECTORIES(${OpenCV_INCLUDE_DIR})
endif(OpenCV_Found)

#Boost
FIND_PACKAGE(Boost REQUIRED program_options filesystem)
if(Boost_FOUND)
    INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIR})
else(Boost_FOUND)
    set(CMAKE_INCLUDE_PATH ${CMAKE_INCLUDE_PATH} "C:/local/boost_1_60_0/")
    set(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH} "C:/local/boost_1_60_0/lib64-msvc-14.0")
    Find_PACKAGE(Boost)
    if(Boost_FOUND)
        INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIR})
    endif(Boost_FOUND)
endif(Boost_FOUND)

set(Boost_USE_STATIC_LIBS        OFF)
set(Boost_USE_MULTITHREADED      ON)
set(Boost_USE_STATIC_RUNTIME     OFF)
set(BOOST_ALL_DYN_LINK           OFF)

# Annotation Lib
file(GLOB_RECURSE FIAT_LIB_HEADERS
    "${FIAT_SOURCE_DIR}/src/image/*.h" "${FIAT_SOURCE_DIR}/src/annotation/*.h" "${FIAT_SOURCE_DIR}/src/tools/*.h"
)

file(GLOB_RECURSE FIAT_LIB_SRC
    "${FIAT_SOURCE_DIR}/src/image/Image.cpp" "${FIAT_SOURCE_DIR}/src/annotation/*.cpp" "${FIAT_SOURCE_DIR}/src/tools/*.cpp"
)

add_library(utilities ${INCLUDE_DIRECTORIES} ${FIAT_LIB_HEADERS} ${FIAT_LIB_SRC})
target_link_libraries (utilities ${Boost_LIBRARIES} ${OpenCV_LIBRARIES} )

if(CHECK_CXX_COMPILER_USED_UTILITIES)

elseif("${CMAKE_CXX_COMPILER_ID}x" STREQUAL "MSVCx")
  # using Visual Studio C++
elseif("${CMAKE_CXX_COMPILER_ID}x" STREQUAL "Intelx")
  # using Intel C++
else()
  # GCC or Clang
    target_link_libraries (utilities m )
endif(CHECK_CXX_COMPILER_USED_UTILITIES)

# Annotate
file(GLOB_RECURSE FIAT_ANNOTATE_HEADERS
)

file(GLOB_RECURSE FIAT_ANNOTATE_SRC
    "${FIAT_SOURCE_DIR}/src/app/annotate.cpp"
)

add_executable(annotate ${INCLUDE_DIRECTORIES} ${FIAT_LIB_HEADERS} ${FIAT_ANNOTATE_HEADERS} ${FIAT_ANNOTATE_SRC})
target_link_libraries(annotate utilities ${Boost_LIBRARIES} ${OpenCV_LIBRARIES})


if(CHECK_CXX_COMPILER_USED_ANNOTATE)
elseif("${CMAKE_CXX_COMPILER_ID}x" STREQUAL "MSVCx")
  # using Visual Studio C++
elseif("${CMAKE_CXX_COMPILER_ID}x" STREQUAL "Intelx")
  # using Intel C++
else()
  # GCC or Clang
    target_link_libraries (annotate m)
endif(CHECK_CXX_COMPILER_USED_ANNOTATE)

Selon votre recommandation, j'ai essayé de construire à partir du Developer Command Prompt for VS2015 mais j'ai quand même eu l'erreur suivante:

msbuild FIAT.vcxproj /p:configuration=debug
Microsoft (R) Build Engine version 14.0.25420.1
Copyright (C) Microsoft Corporation. All rights reserved.

Build started 6/12/2017 5:16:26 AM.
Project "E:\Work\FastImageAnnotationTool-master\FIAT.vcxproj" on node 1 (default targets).
E:\Work\FastImageAnnotationTool-master\FIAT.vcxproj(1,1): error MSB4067: The element <#text> beneat
h element <Project> is unrecognized.
Done Building Project "E:\Work\FastImageAnnotationTool-master\FIAT.vcxproj" (default targets) -- FA
ILED.


Build FAILED.

"E:\Work\FastImageAnnotationTool-master\FIAT.vcxproj" (default target) (1) ->
  E:\Work\FastImageAnnotationTool-master\FIAT.vcxproj(1,1): error MSB4067: The element <#text> bene
ath element <Project> is unrecognized.

    0 Warning(s)
    1 Error(s)

Time Elapsed 00:00:00.03

Voici le fichier .vcxproj de mon projet

<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.Microsoft.com/developer/msbuild/2003">  
  <ItemGroup>  
    <ProjectConfiguration Include="Debug|Win32">  
      <Configuration>Debug</Configuration>  
      <Platform>Win32</Platform>  
    </ProjectConfiguration>  
    <ProjectConfiguration Include="Release|Win32">  
      <Configuration>Release</Configuration>  
      <Platform>Win32</Platform>  
    </ProjectConfiguration>  
  </ItemGroup>  
  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.default.props" />  
  <PropertyGroup>  
    <ConfigurationType>Application</ConfigurationType>  
    <PlatformToolset>v120</PlatformToolset>  
  </PropertyGroup>  
  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />  
  Annotation.cpp Annotations.cpp app/annotate.cpp - image/Image.cpp test/image-test.cpp - tools/tools.cpp

  <ItemGroup>  
    <ClInclude Include="/src/annotation/Annotation.cpp" />  
  </ItemGroup>  
  <ItemGroup>  
    <ClInclude Include="/src/annotation/Annotation.h" />  
  </ItemGroup>  

  <ItemGroup>  
    <ClInclude Include="/src/annotation/Annotations.cpp" />  
  </ItemGroup>  
  <ItemGroup>  
    <ClInclude Include="/src/annotation/Annotation.h" />  
  </ItemGroup>  

  <ItemGroup>  
    <ClInclude Include="/src/app/annotate.cpp" />  
  </ItemGroup>  

  <ItemGroup>  
    <ClInclude Include="/src/image/Image.cpp" />  
  </ItemGroup>  
  <ItemGroup>  
    <ClInclude Include="/src/image/Image.h" />  
  </ItemGroup>

  <ItemGroup>  
    <ClInclude Include="/src/test/image-test.cpp" />  
  </ItemGroup> 

  <ItemGroup>  
    <ClInclude Include="/src/tools/tools.cpp" />  
  </ItemGroup>  
  <ItemGroup>  
    <ClInclude Include="/src/tools/tools.h" />  
  </ItemGroup> 

  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Targets" />  
</Project>  
20
A_Matar

Ce qui a fonctionné pour moi était

  1. Fichier> Supprimer le cache
  2. Cliquez sur Configurer 
  3. Sélection de la bonne version de Visual Studio dans la liste déroulante, c.-à-d. - celui qui est installé sur votre machine. dans mon cas, il s'agissait de «Visual Studio 15 2017» sous Windows 10.

J'espère que cela t'aides. P.s. - Je suis un noob chez StackOverflow, alors excuse-moi si je me trompe.

5
Yatin Khurana

L'erreur lit un chemin d'accès manquant à MSBuild.exe

La solution possible est d'installer MSBuild.exe

Faites défiler la liste jusqu'à Autres outils et cadres et installez Construire des outils pour Visual Studio

4
Abhishek Jain

Utilisez-vous la console du développeur Visual Studio? Je constate que si je cmake --build . à partir de la ligne de commande intégrée de Windows (cmd.exe), mes versions échouent de la même manière. Si j'utilise plutôt la console du développeur Visual Studio, les choses fonctionnent mieux, même si je dois ajouter /p:Platform="Win32" en tant que balise si j'appelle directement msbuild. Spécifiquement, cela concerne les outils qui ne sont pas trouvés ou des chemins incorrects. L’utilisation de la ligne de commande Visual Studio vous donne un tas de variables d’environnement nécessaires à MSBuild pour compiler votre projet.

3
Stewart

J'ai eu le même problème pour ce qui pourrait être la même raison.

J'ai configuré CMake pour utiliser le compilateur Visual Studio 15 2017.

[...]

J'ai essayé de construire à partir du Developer Command Prompt for VS2015

Si je lis ceci correctement, vous avez installé Visual Studio 14 (c'est-à-dire Visual Studio 2015) et avez essayé de configurer CMake avec le générateur Visual Studio 15 (c'est-à-dire Visual Studio 2017) - exactement ce que j'ai fait, sans le vouloir.

Portez une attention particulière aux noms de version. Ils peuvent être déroutants. Visual Studio 15 n'est pas la même chose que Visual Studio 2015. Le nom du programme peut contenir une année à quatre chiffres ou un numéro de version à deux chiffres, ou les deux, comme dans le cas de l'interface graphique CMake. Voir https://en.wikipedia.org/wiki/Microsoft_Visual_Studio#History et comparez les noms de produits et les numéros de version répertoriés.

3
Maria V.

Je l'ai frappé plusieurs fois maintenant. Lorsque vous définissez des variables d'environnement telles que TEMP et TMP sur un chemin qui n'est pas accessible en écriture ou n'existe pas, CMake générera cette erreur car l'exécution de MSBUILD.exe a échoué lors de la génération de certains fichiers. 

1
ZHANG Zikai

J'ai corrigé en corrigeant la version de Visual Studio:

cmake -G "Visual Studio 12 2013 Win64"

Générateurs disponibles:

  Visual Studio 15 2017 [Arch] = Generates Visual Studio 2017 project files. 
                                 Optional [Arch] can be "Win64" or "ARM".    
  Visual Studio 14 2015 [Arch] = Generates Visual Studio 2015 project files. 
                                 Optional [Arch] can be "Win64" or "ARM".    
  Visual Studio 12 2013 [Arch] = Generates Visual Studio 2013 project files. 
                                 Optional [Arch] can be "Win64" or "ARM".    
  Visual Studio 11 2012 [Arch] = Generates Visual Studio 2012 project files. 
                                 Optional [Arch] can be "Win64" or "ARM".    
  Visual Studio 10 2010 [Arch] = Generates Visual Studio 2010 project files. 
                                 Optional [Arch] can be "Win64" or "IA64".   
  Visual Studio 9 2008 [Arch]  = Generates Visual Studio 2008 project files. 
                                 Optional [Arch] can be "Win64" or "IA64".   
0
dimon4eg

installhttp://www.Microsoft.com/en-us/download/confirmation.aspx?id=40760 Outils MSbuild

Exécuter CMD en tant qu'utilisateur normalTapez la commande MsBuild et veryfi l'installation ** ** Terminé

0
Hansa Tharuka