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.
Vous devez vous connecter pour publier un commentaire.
Le message d'erreur indiquait un manquant Chemin à MSBuild.exe
La solution possible à ce problème est d'installer MSBuild.exe
Faites défiler vers le bas pour d'Autres Outils et Cadres, et installer Construire des Outils Pour Visual Studio
Ce qui a Fonctionné pour moi a été
J'ai eu le même problème pour ce qui pourrait être la même raison.
Si je suis en train de lire ceci correctement, vous avez
Visual Studio 14
(c'est à direVisual Studio 2015
) installé et essayé de configurerCMake
avec leVisual Studio 15
(c'est à direVisual Studio 2017
) générateur -- exactement la chose que j'ai fait, sans le vouloir.Payer une attention particulière à la version de noms. Ils peuvent être source de confusion.
Visual Studio 15
n'est pas le même queVisual Studio 2015
. Le nom du programme peut contenir une année à quatre chiffres ou les deux chiffres du numéro de version, ou les deux, comme c'est le cas avec laCMake
GUI. Voir https://en.wikipedia.org/wiki/Microsoft_Visual_Studio#History et comparer le produit répertorié les noms et les numéros de version.Êtes-vous à l'aide de Visual Studio du développeur de la console? Je trouve que si je
cmake --build .
à partir de la Fenêtre de compilation en ligne de commande (cmd.exe), puis génère échouer de façon similaire. Si j'utilise Visual Studio du Développeur de la console au lieu de cela, puis les choses fonctionnent mieux, mais j'ai besoin d'ajouter/p:Platform="Win32"
comme une balise si je l'appellemsbuild
directement.. plus particulièrement, la présente est pour les outils qui ne sont pas trouvés ou incorrecte des chemins. À l'aide de Visual Studio de ligne de commande vous donne un tas de variables de l'environnement qui sont nécessaires par MSBuild pour compiler votre projet..sln
fichier. Utiliser MSBuild sur le.sln
fichier au lieu de le.vcxproj
.J'ai frappé plusieurs fois à cette question maintenant. Lorsque vous définissez les variables d'environnement comme
TEMP
etTMP
à un chemin qui n'est pas accessible en écriture ou n'existe pas, CMake va produire cette erreur car il n'a pas pu exécuter MSBUILD.exe lors de la génération de certains fichiers.J'ai corrigé en modifiant version de Visual Studio:
Disponible générateurs :
installer
http://www.microsoft.com/en-us/download/confirmation.aspx?id=40760
MSbuild outils
Exécuter CMD comme utilisateur normal
Type de commande MsBuild et veryfi l'installation **
**Fini