CMake: failed to run MSBuild command: MSBuild.exe

100,031

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

  1. File > Delete Cache
  2. Click Configure
  3. 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.

Share:
100,031
A_Matar
Author by

A_Matar

Updated on February 09, 2021

Comments

  • A_Matar
    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
    A_Matar almost 7 years
    I tried it but still got an error, pls check the edited question above
  • Stewart
    Stewart almost 7 years
    Took a look at your update. It looks like Visual Studio is having problems parsing the VCPROJ file.
  • Stewart
    Stewart almost 7 years
    Ok, 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
    Nitro over 6 years
    I uninstalled VS and when I reinstalled it I had to manually re install MSBuild like this. Thanks!
  • DeJaVo
    DeJaVo about 6 years
    Just add the msbuild path to environment variables path
  • Ted
    Ted almost 5 years
    What is the value for VCTargetsPath in the generated .vcxproj file ?
  • KulaGGin
    KulaGGin about 4 years
    Didn'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