Visual Studio нужен Ninja Generator, хотя он у меня не установлен - PullRequest
0 голосов
/ 28 июня 2018

Я пытаюсь настроить простой проект, чтобы я мог изучить некоторые OpenGL. Вот мой CmakeList.txt:

cmake_minimum_required (VERSION 3.8)

project ("opengl_1")

set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/modules/")

find_package(OpenGL REQUIRED)
if (OpenGL_FOUND)
    include_directories(${OPENGL_INCLUDE_DIR})
endif()

find_package(GLFW REQUIRED)
if (GLFW_FOUND)
    include_directories(${GLFW_INCLUDE_DIR})
endif()

file(GLOB_RECURSE SRC "src/*")
file(GLOB_RECURSE INCLUDES "include/*")

include_directories("include")

# Add source to this project's executable.
add_executable (opengl1 ${SRC} ${INCLUDES})
target_link_libraries(opengl1 ${OPENGL_LIBRARIES} ${GLFW_LIBRARIES})

Я отказался от кода Visual Studio для Visual Studio 2017 из-за проблемы с генерацией файла команд компиляции в Windows. Для этого потребовался генератор ниндзя, и у меня было множество проблем с его использованием cmake.

Итак, я cd в каталоге моего проекта и делаю cmake .:

-- Building for: Visual Studio 15 2017
-- The C compiler identification is MSVC 19.14.26431.0
-- The CXX compiler identification is MSVC 19.14.26431.0
-- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.14.26428/bin/Hostx86/x86/cl.exe
-- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.14.26428/bin/Hostx86/x86/cl.exe -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.14.26428/bin/Hostx86/x86/cl.exe
-- Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.14.26428/bin/Hostx86/x86/cl.exe -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found OpenGL: opengl32
-- Found GLFW: C:/libraries/glfw/include (found version "3.2.1")
-- Configuring done
-- Generating done
-- Build files have been written to: ...

Никаких упоминаний о генераторе ниндзя. Однако, когда я открываю решение в VS2017 и иду, чтобы обновить intellisense с помощью «generate», я получаю:

1> Does not match the generator used previously: Visual Studio 15 2017
1> Either remove the CMakeCache.txt file and CMakeFiles directory or choose a different binary directory.
CMake Error: Error: generator : Ninja
Does not match the generator used previously: Visual Studio 15 2017
Either remove the CMakeCache.txt file and CMakeFiles directory or choose a different binary directory.

Когда я удаляю эти вещи, ошибка все еще происходит.

Что здесь происходит? Если мне все равно понадобится ниндзя, может кто-нибудь сказать мне, что мне нужно делать?

Спасибо!

1 Ответ

0 голосов
/ 29 июня 2018

Итак, я отвечу на свой вопрос, потому что для того, чтобы эта ошибка произошла, потребовалось нечто странное, что происходило сразу.

  1. Я изначально установил Ninja, а затем удалил его до появления этой ошибки.
  2. Я изначально создал файл Cmake с помощью опции VS Cmake Project, я подозреваю, что это использовало ниндзя в фоновом режиме
  3. Я удалил ниндзя

В результате (3) завершение кода больше не работает, как ожидалось. Чтобы исправить эту ситуацию:

  1. Удалить все ненужные файлы Cmake
  2. Открыть командную строку разработчика VS
  3. Выполнить cmake .

Это СЛЕДУЕТ использовать по умолчанию обычную процедуру MSBUILD и устранить проблему. Каким-то образом cmake -G Ninja . запускался в фоновом режиме , даже , когда я генерировал файлы сборки из командной строки не-VS. Чтобы исправить это, потребовалась командная строка VS.

Надеюсь, это кому-нибудь поможет. Это смутило меня.

...