CMake: impossible d'exécuter la commande MSBuild: MSBuild.exe

Je suis en train de construire FIAT à l'aide de CMake GUI sur 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 Visual Studio 15 2017 compilateur.

Comment puis-je résoudre ce problème?

Si besoin, voici le CMakeLists.txt fichier

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é avec la construction de la Developer Command Prompt for VS2015, mais 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 mon projet .vcxproj fichier

<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>  
  • Le titre est incorrect, devrait être Failed to **run** MSBuild command. Avez-vous essayé d'exécuter cette commande (MSBuild.exe) manuellement?
  • édité. Comment puis-je exécuter manuellement?
  • Il suffit de taper dans la ligne de commande. Une telle façon, vous pouvez vérifier si l'exécutable est en fait existent et peuvent être trouvées en CHEMIN.
  • Vous pourriez avoir besoin pour commencer votre CMake à partir d'un Développeur de l'Invite de Commande de VS2017. Voir l'entrée dans Visual Studio 2017 section du Menu Démarrer.
  • Quand j'ai couru CMake 3.8.2 sur la FIAT projet que vous avez fourni dans le lien, une solution a été créé et j'ai pu courir le construire. Donc, s'il vous plaît redémarrer une nouvelle copie de votre FIAT projet, Puis démarrez Visual Studio 15 2017 développeur invite de commande et exécutez la suivante commandes cd FastImageAnnotationTool-master, mkdir build, cd build, cmake -G "Visual Studio 15 2017" .., cmake --build . dans cet ordre.
  • Pas de construction de FIAT, mais dans mon projet, j'ai utilisé Visual Studio 15 2017 développeur invite de commande, puis faire cmake -G "Visual Studio 15 2017" .. le même message d'erreur "impossible d'exécuter la commande MSBuild: MSBuild.exe pour obtenir la valeur de VCTargetsPath:" s'affiche
  • J'ai commencé à avoir ce problème aujourd'hui, après l'avoir jamais vécu cela avant. La seule chose différente, c'est que j'ai installé récemment VS 2019.

InformationsquelleAutor A_Matar | 2017-06-10