CMake: échec de l'exécution de la commande MSBuild: MSBuild.EXE
je suis en train de construire FIAT en utilisant 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 le compilateur Visual Studio 15 2017.
Comment puis-je résoudre ce problème?
si nécessaire, voici les listes des Cmakélistes.fichier 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 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:WorkFastImageAnnotationTool-masterFIAT.vcxproj" on node 1 (default targets).
E:WorkFastImageAnnotationTool-masterFIAT.vcxproj(1,1): error MSB4067: The element <#text> beneat
h element <Project> is unrecognized.
Done Building Project "E:WorkFastImageAnnotationTool-masterFIAT.vcxproj" (default targets) -- FA
ILED.
Build FAILED.
"E:WorkFastImageAnnotationTool-masterFIAT.vcxproj" (default target) (1) ->
E:WorkFastImageAnnotationTool-masterFIAT.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
le 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>
5 réponses
l'erreur indique un chemin manquant MSBuild.exe
la solution possible est d'installer MSBuild.exe
Faites défiler vers le bas jusqu'à autres outils et cadres, et installer Construire Des Outils Pour Visual Studio
utilisez-vous la console du développeur Visual Studio? Je le trouve si je le trouve!--0--> à partir de la Fenêtre de compilation en ligne de commande (cmd.exe), alors mes constructions échouent de la même manière. Si j'utilise la console du développeur Visual Studio à la place, alors les choses fonctionnent mieux, bien que je doive ajouter /p:Platform="Win32"
comme une balise si j'appelle msbuild
directement.. Spécifiquement ceci est pour 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 qui sont nécessaires pour MSBuild pour compiler votre projet.
ce qui a fonctionné pour moi était
- Fichier > Supprimer Le Cache
- Cliquez Sur Configurer
- sélectionner la bonne version de Visual Studio à partir de la liste déroulante, c'est-à-dire. - celui qui est installé sur votre machine. dans mon cas, C'était "Visual Studio 15 2017" sur windows 10.
J'Espère Que Cela Vous Aidera. P. S. - Je suis un noob à StackOverflow, alors pardonnez-moi si je me trompe.
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é avec la construction de la
Developer Command Prompt for VS2015
Si je suis en train de lire ceci correctement, vous avez Visual Studio 14
(i.e. Visual Studio 2015
) installé et essayé de configurer CMake
Visual Studio 15
(i.e. Visual Studio 2017
) générateur -- exactement ce que j'ai fait, involontairement.
fermeture de la paye attention aux noms de version. Ils peuvent être source de confusion. Visual Studio 15
n'est pas le même que Visual Studio 2015
. Le nom du programme peut contenir un année à quatre chiffres ou un numéro de version à deux chiffres -- ou les deux, comme c'est le cas avec le CMake
GUI. Voir https://en.wikipedia.org/wiki/Microsoft_Visual_Studio#History et comparez les noms des produits énumérés et les numéros de version.
Je l'ai frappé plusieurs fois maintenant. Lorsque vous définissez des variables d'environnement comme TEMP
et TMP
vers un chemin qui n'est pas accessible en écriture ou qui n'existe pas, CMake va produire cette erreur car il n'a pas réussi à lancer MSBUILD.exe tout en générant des fichiers.