Pytanie CMake: nie udało się uruchomić komendy MSBuild: MSBuild.exe


Próbuję budować PLACET za pomocą CMake GUI w 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!

Skonfigurowałem CMake, aby używał kompilatora Visual Studio 15 2017.

Jak mogę to naprawić?

W razie potrzeby tutaj jest plik CMakeLists.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)

Zgodnie z twoją rekomendacją, próbowałem budować z Developer Command Prompt for VS2015 ale nadal występuje następujący błąd:

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

Oto mój projekt .vcxproj plik

<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>  

16
2018-06-10 22:03


pochodzenie


Tytuł jest niepoprawny, powinien być Failed to **run** MSBuild command. Czy próbowałeś uruchomić to polecenie (MSBuild.exe) ręcznie? - Tsyvarev
edytowane. Jak mogę uruchomić go ręcznie? - A_Matar
Po prostu wpisz go w linii poleceń. W ten sposób możesz sprawdzić, czy plik wykonywalny rzeczywiście istnieje i można go znaleźć w PATH. - Tsyvarev
Może być konieczne uruchomienie programu CMake z poziomu wiersza polecenia programisty dla VS2017. Zobacz wpis w sekcji Visual Studio 2017 w menu Start. - vre
Kiedy uruchomiłem CMake 3.8.2 na projekcie FIAT, który podałeś w linku, stworzono rozwiązanie i mogłem uruchomić kompilację. Więc proszę uruchom ponownie w nowej kopii swojego projektu FIAT, a następnie uruchom wiersz poleceń programisty programu Visual Studio 15 2017 i uruchom poniższe polecenia cd FastImageAnnotationTool-master, mkdir build, cd build, cmake -G "Visual Studio 15 2017" .., cmake --build . w tej kolejności. - vre


Odpowiedzi:


Błąd odczytuje a brakująca ścieżka do MSBuild.exe

Możliwym rozwiązaniem tego problemu jest instalacja MSBuild.exe

Przewiń w dół do Inne narzędzia i ramyi zainstaluj Narzędzia kompilacji dla Visual Studio


5
2017-11-13 06:10



Odinstalowałem VS i po ponownym zainstalowaniu go musiałem ręcznie ponownie zainstalować MSBuild w ten sposób. Dzięki! - Nitro
Oznacza to samo, mimo że działa, to się liczy ... - Abhishek Jain
Po prostu dodaj ścieżkę msbuild do ścieżki zmiennych środowiskowych - DeJaVo


Czy korzystasz z konsoli programisty Visual Studio? Uważam, że jeśli ja cmake --build . z wiersza poleceń programu Window (cmd.exe), a następnie moje kompilacje zawodzą w podobny sposób. Jeśli używam konsoli programu Visual Studio Developer, to działa lepiej, ale muszę dodać /p:Platform="Win32" jako tag, jeśli zadzwonię msbuild bezpośrednio .. W szczególności dotyczy to narzędzi, których nie znaleziono lub są nieprawidłowe ścieżki. Korzystanie z wiersza poleceń programu Visual Studio daje wiele zmiennych środowiskowych, które są potrzebne programowi MSBuild do kompilacji projektu.


3
2018-06-11 11:30



Próbowałem, ale nadal mam błąd, sprawdź poprawione pytanie powyżej - A_Matar
Zerknąłem na twoją aktualizację. Wygląda na to, że Visual Studio ma problem z analizą pliku VCPROJ. - Stewart
Dobra, jeszcze jedna wskazówka. Kiedy używasz cmake do generowania plików wizualnego studio, powinno być .sln plik. Użyj MSBuild na .sln plik zamiast .vcxproj. - Stewart


To, co zadziałało, było dla mnie

  1. Plik> Usuń pamięć podręczną
  2. Kliknij Konfiguruj
  3. Wybór odpowiedniej wersji Visual Studio z rozwijanej listy, tj. - ten zainstalowany na twoim komputerze. w moim przypadku było to "Visual Studio 15 2017" na Windows 10.

Mam nadzieję że to pomoże. P.s. - Jestem noobem w StackOverflow, więc wybacz mi, jeśli się mylę.


2
2017-12-30 06:17





Miałem ten sam problem z tego, co może być z tego samego powodu.

Skonfigurowałem CMake, aby używał kompilatora Visual Studio 15 2017.

[...]

Próbowałem budować od Developer Command Prompt for VS2015

Jeśli czytam to poprawnie, masz Visual Studio 14 (to znaczy. Visual Studio 2015) zainstalowany i próbował skonfigurować CMake z Visual Studio 15 (to znaczy. Visual Studio 2017) generator - dokładnie to, co zrobiłem, nieumyślnie.

Zwróć szczególną uwagę na nazwy wersji. Mogą być mylące. Visual Studio 15 nie jest taki sam jak Visual Studio 2015. Nazwa programu może zawierać czterocyfrowy lub dwucyfrowy numer wersji - lub oba, tak jak w przypadku CMake GUI. Widzieć https://en.wikipedia.org/wiki/Microsoft_Visual_Studio#History i porównaj wymienione nazwy produktów i numery wersji.


1
2018-01-19 16:59





Udało mi się to już kilka razy. Po ustawieniu zmiennych środowiskowych, takich jak TEMP i TMP do ścieżki, która nie jest zapisywalna lub nie istnieje, CMake wygeneruje ten błąd, ponieważ nie uruchomił pliku MSBUILD.exe podczas generowania niektórych plików.


1
2018-03-08 07:29