c++ msbuild cmake cmake-gui

c++ - CMake: no se pudo ejecutar el comando MSBuild: MSBuild.exe



cmake-gui (7)

¿Está utilizando la consola del desarrollador de Visual Studio? Me parece que si lo cmake --build . desde la línea de comandos de construcción de Windows (cmd.exe), mis compilaciones fallan de manera similar. Si uso la consola del desarrollador de Visual Studio en su lugar, entonces las cosas funcionan mejor, aunque necesito agregar /p:Platform="Win32" como una etiqueta si llamo a msbuild directamente ... Específicamente, esto es para herramientas que no se encuentran o son incorrectas caminos. El uso de la línea de comandos de Visual Studio le brinda un conjunto de variables de entorno que MSBuild necesita para compilar su proyecto.

Estoy tratando de construir FIAT usando CMake GUI en 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!

Configuré CMake para usar el compilador de Visual Studio 15 2017.

¿Cómo puedo arreglar esto?

Si es necesario, aquí está el archivo 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)

Según su recomendación, intenté Developer Command Prompt for VS2015 desde la línea de Developer Command Prompt for VS2015 del Developer Command Prompt for VS2015 pero aún así Developer Command Prompt for VS2015 el siguiente 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

Aquí está el archivo .vcxproj mi proyecto

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


Arreglo corrigiendo la versión de Visual Studio:

cmake -G "Visual Studio 12 2013 Win64"

Generadores disponibles:

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


El error lee una ruta de acceso faltante a MSBuild.exe

La solución posible para esto es instalar MSBuild.exe

Desplácese hasta Otras herramientas y marcos , e instale las Herramientas de compilación para Visual Studio


He golpeado esto varias veces ahora. Cuando configura variables de entorno como TEMP y TMP en una ruta que no se puede escribir o que no existe, CMake producirá este error ya que no pudo ejecutar MSBUILD.exe al generar algunos archivos.


Lo que funcionó para mí fue

  1. Archivo> Eliminar caché
  2. Haga clic en Configurar
  3. Seleccionar la versión correcta de Visual Studio de la lista desplegable, es decir, la que está instalada en su máquina. En mi caso, fue ''Visual Studio 15 2017'' en Windows 10.

Espero que esto ayude. PD: soy un novato en , así que perdóneme si estoy equivocado.


Tuve el mismo problema por lo que podría ser la misma razón.

Configuré CMake para usar el compilador de Visual Studio 15 2017.

[...]

Intenté construir desde la línea de Developer Command Prompt for VS2015 del Developer Command Prompt for VS2015

Si estoy leyendo esto correctamente, tienes instalado Visual Studio 14 (es decir, Visual Studio 2015 ) y trataste de configurar CMake con el generador de Visual Studio 15 (es decir, Visual Studio 2017 ) - exactamente lo que hice, sin querer.

Preste mucha atención a los nombres de las versiones. Pueden ser confusos. Visual Studio 15 no es lo mismo que Visual Studio 2015 . El nombre del programa puede contener un año de cuatro dígitos o un número de versión de dos dígitos, o ambos, como es el caso con la GUI de CMake . Consulte https://en.wikipedia.org/wiki/Microsoft_Visual_Studio#History y compare los nombres de productos y los números de versión listados.