CMake: failed to run MSBuild command: MSBuild.exe

2020-02-20 07:04发布

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>  

10条回答
迷人小祖宗
2楼-- · 2020-02-20 07:30

I've hit this several times now. When you set environment variables like TEMP and TMP to a path that is not writable or doesn't exist, CMake will produce this error as it failed to run MSBUILD.exe while generating some files.

查看更多
beautiful°
3楼-- · 2020-02-20 07:32

install http://www.microsoft.com/en-us/download/confirmation.aspx?id=40760 MSbuild tools

Run CMD as normal user Type command MsBuild and veryfi the installation ** **Finished

查看更多
兄弟一词,经得起流年.
4楼-- · 2020-02-20 07:34

I fixed by correcting Visual Studio version:

cmake -G "Visual Studio 12 2013 Win64"

Available generators :

  Visual Studio 15 2017 [arch] = Generates Visual Studio 2017 project files. 
                                 Optional [arch] can be "Win64" or "ARM".    
  Visual Studio 14 2015 [arch] = Generates Visual Studio 2015 project files. 
                                 Optional [arch] can be "Win64" or "ARM".    
  Visual Studio 12 2013 [arch] = Generates Visual Studio 2013 project files. 
                                 Optional [arch] can be "Win64" or "ARM".    
  Visual Studio 11 2012 [arch] = Generates Visual Studio 2012 project files. 
                                 Optional [arch] can be "Win64" or "ARM".    
  Visual Studio 10 2010 [arch] = Generates Visual Studio 2010 project files. 
                                 Optional [arch] can be "Win64" or "IA64".   
  Visual Studio 9 2008 [arch]  = Generates Visual Studio 2008 project files. 
                                 Optional [arch] can be "Win64" or "IA64".   
查看更多
时光不老,我们不散
5楼-- · 2020-02-20 07:35

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.

查看更多
霸刀☆藐视天下
6楼-- · 2020-02-20 07:38

I'm working in node and have a C++ library as a dependency that must be built regularly. In my case installing extra build tools, etc, did not help. I had to simply uninstall all Visual Studio tools (via the installer) and then only install Visual Studio Professional.

查看更多
该账号已被封号
7楼-- · 2020-02-20 07:38

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

查看更多
登录 后发表回答