【问题标题】:Visual Studio wants Ninja Generator even though I don't have it installedVisual Studio 想要 Ninja Generator,即使我没有安装它
【发布时间】:2018-06-28 15:04:59
【问题描述】:

我正在尝试建立一个简单的项目,以便学习一些 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})

由于在 Windows 上生成编译命令文件的问题,我已经放弃了 Visual Studio Code for Visual Studio 2017。它需要 Ninja 生成器,我在让 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 中打开解决方案并使用“生成”更新智能感知时,我得到:

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.

当我删除这些东西时,错误仍然存​​在。

这里发生了什么?如果我仍然需要 Ninja,有人可以告诉我我需要做什么吗?

谢谢!

【问题讨论】:

  • 使用“生成”时,设置正确的CMake generator。如果没有忍者生成器,请不要使用它。
  • @Tsyvarev 如果我安装了 Ninja,我可以在 MSVC 中使用它吗?
  • Visual Studio 2017 附带 ninja。在我的 PC 上,ninja 可以在 C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\Ninja 文件夹下找到。如果出现上述错误:如果您切换 CMake 生成器,则应始终从新的二进制输出目录开始。

标签: visual-studio cmake visual-studio-2017 ninja


【解决方案1】:

所以我会回答我自己的问题,因为这需要同时发生一堆奇怪的事情来导致这个错误发生。

  1. 我最初安装了 Ninja,然后在发生此错误之前将其卸载。
  2. 我最初是通过 VS 的Cmake Project 选项制作的 Cmake 文件,我怀疑这是在后台使用 Ninja
  3. 我卸载了忍者

由于 (3) 代码完成不再按预期工作。要纠正这种情况:

  1. 删除所有不必要的 Cmake 文件
  2. 打开 VS 开发者命令提示符
  3. 运行cmake .

这应该默认为正常的 MSBUILD 例程并解决问题。当我从非 VS 命令提示符生成构建文件时,不知何故 cmake -G Ninja . 在后台运行甚至。它需要 VS 命令提示符来修复它。

希望这对某人有所帮助。这让我很困惑。

【讨论】:

    猜你喜欢
    • 2020-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-30
    • 2021-04-06
    相关资源
    最近更新 更多