CMake: failed to run MSBuild command: MSBuild.exe
Solution 1
The error reads a missing Path to MSBuild.exe
The possible solution to this is to install MSBuild.exe
Scroll down to Other Tools and Frameworks, and install Build Tools For Visual Studio
Solution 2
What Worked for me was
- File > Delete Cache
- Click Configure
- Selecting The right version of Visual Studio from the drop-down list, I.e. - the one that is installed on your machine. in my case, it was 'Visual Studio 15 2017' on windows 10.
Solution 3
For visual studio 2019,
System properties > environment variables > path, Add this one: C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin
Solution 4
As DeJaVo said, add the directory containing MSBuild.exe to the PATH in your system environment variables, then restart CMAke. Mine was in C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin
Solution 5
I had the same issue for what might be the same reason.
I configured CMake to use Visual Studio 15 2017 compiler.
[...]
I tried building from the
Developer Command Prompt for VS2015
If I'm reading this correctly, you have Visual Studio 14
(i.e. Visual Studio 2015
) installed and tried to configure CMake
with the Visual Studio 15
(i.e. Visual Studio 2017
) generator -- exactly the thing I did, unintentionally.
Pay close attention to the version names. They can be confusing. Visual Studio 15
is not the same as Visual Studio 2015
. The program name may contain a four-digit year or a two-digit version number -- or both, as is the case with the CMake
GUI. See https://en.wikipedia.org/wiki/Microsoft_Visual_Studio#History and compare the listed product names and version numbers.
A_Matar
Updated on February 09, 2021Comments
-
A_Matar about 3 years
I am trying to build FIAT using
CMake
GUI on 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!
I configured CMake to use Visual Studio 15 2017 compiler.
How can I fix this?
If needed, here is the CMakeLists.txt file
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)
As per your recommendation, I tried building from the
Developer Command Prompt for VS2015
but still got the following error: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
Here is my project's
.vcxproj
file<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>
-
A_Matar almost 7 yearsI tried it but still got an error, pls check the edited question above
-
Stewart almost 7 yearsTook a look at your update. It looks like Visual Studio is having problems parsing the VCPROJ file.
-
Stewart almost 7 yearsOk, one more tip. When you use cmake to generate the visual studio files, there should be a
.sln
file. Use MSBuild on the.sln
file instead of the.vcxproj
. -
Nitro over 6 yearsI uninstalled VS and when I reinstalled it I had to manually re install MSBuild like this. Thanks!
-
DeJaVo about 6 yearsJust add the msbuild path to environment variables path
-
Ted almost 5 yearsWhat is the value for VCTargetsPath in the generated .vcxproj file ?
-
KulaGGin about 4 yearsDidn't work for me. Still getting the same issue. I tied Visual Studio 15 2017, Visual Studio 15 2017 ARM and Visual Studio 15 2017 Win64, getting the error no matter what I choose