(Сборка CMake) Фатальная ошибка LNK1181: не удается открыть входной файл 'glew.lib' - PullRequest
0 голосов
/ 19 января 2019

Я работаю над игровым движком и недавно пытался создать CMakeLists.txt для сборки проекта. Мне удалось создать cmakelist, который настроен и сгенерирован, но когда я попытался запустить генератор .sln в визуальных студиях, я получил следующую ошибку:

fatal error LNK1181: cannot open input file 'glew.lib'

Мой игровой движок использует внешние библиотеки glew и glfw. Вот мой файл cmakelist:

cmake_minimum_required(VERSION 3.7)
project(GameEngine)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

set(SOURCE_DIR ${CMAKE_SOURCE_DIR}/Engine/source)

set(ENGINE_SOURCES ${SOURCE_DIR}/core/Engine.cpp
           ${SOURCE_DIR}/graphics/gl_types/IndexBuffer.cpp
           ${SOURCE_DIR}/graphics/gl_types/VertexArray.cpp
           ${SOURCE_DIR}/graphics/gl_types/VertexBuffer.cpp
           ${SOURCE_DIR}/graphics/renderer/Camera.cpp
           ${SOURCE_DIR}/graphics/renderer/Shader.cpp
           ${SOURCE_DIR}/graphics/renderer/Texture.cpp
           ${SOURCE_DIR}/graphics/renderer/Window.cpp
           ${SOURCE_DIR}/vendor/stb_image/stb_image.cpp)

add_library(engine STATIC ${ENGINE_SOURCES})
target_include_directories(engine PUBLIC ${SOURCE_DIR})


set(glfw3_DIR ${CMAKE_SOURCE_DIR}/Dependencies/GLFW/lib/cmake/glfw3)
find_package(glfw3 REQUIRED)

set(glew_DIR ${CMAKE_SOURCE_DIR}/Dependencies/GLEW)
find_library(glew glew32s "${glew_DIR}/lib/Release/Win32")

include_directories(${GLFW_INCLUDE_DIRS})
include_directories(${glew_DIR}/include)

target_link_libraries(
        engine
        glfw
        glew
)

set(GAME_DIR ${CMAKE_SOURCE_DIR}/Game/source)
set(GAME_SOURCES ${GAME_DIR}/main.cpp)

add_executable(engine_game ${GAME_SOURCES})

target_link_libraries(engine_game engine)```

1 Ответ

0 голосов
/ 19 января 2019

Вы используете find_library, который устанавливает переменные. Вы должны использовать их как таковые:

target_link_libraries(
        engine
        ${glfw_LIBRARIES}
        ${glew}
)

Я полагаю, glfw_LIBRARIES - это переменная, установленная find_package(glfw).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...