Не удается найти пакет GLFW с помощью CMake - PullRequest
0 голосов
/ 22 февраля 2019

Структура моего проекта выглядит следующим образом:

  • CMakeLists.txt
  • deps
    • glew
    • glfw
  • включает
  • SRC
    • ...
    • графика
      • ...
      • CMakeLists.txt

Два файла CMakeLists.txt, которые заслуживают внимания:

CMakeLists.txt

cmake_minimum_required(VERSION 3.9)
project(noam_engine)

find_package(glfw3 REQUIRED)
find_package(OpenGL REQUIRED)
find_package(GLEW REQUIRED)

set(CMAKE_CXX_STANDARD 11)
set(NE_LIBRARIES common math graphics)

FOREACH(lib ${NE_LIBRARIES})
    add_subdirectory(src/${lib})
ENDFOREACH(lib)

add_executable(noam_engine src/main.cpp)

if(OPENGL_FOUND AND GLEW_FOUND)
    target_include_directories(noam_engine PUBLIC include ${OPENGL_INCLUDE_DIR} ${GLEW_INCLUDE_DIRS})
    target_link_libraries(noam_engine ${NE_LIBRARIES})
endif()

src / graphics / CMakeLists.txt

cmake_minimum_required(VERSION 3.9)

find_package(glfw3 REQUIRED)
find_package(OpenGL REQUIRED)
find_package(GLEW REQUIRED)

file(GLOB SRC "*.cpp")
add_library(graphics ${SRC})

if(OPENGL_FOUND AND GLEW_FOUND)
    target_include_directories(graphics PUBLIC ${PROJECT_SOURCE_DIR}/include ${OPENGL_INCLUDE_DIR} ${GLEW_INCLUDE_DIRS})
    target_link_libraries(graphics ${OPENGL_gl_LIBRARY} ${GLFW3_LIBRARY} ${GLEW_LIBRARIES})
    message(STATUS "GLFW and GLEW successfully linked")
    message(STATUS ${OPENGL_gl_LIBRARY})
    message(STATUS ${GLFW3_LIBRARY})
    message(STATUS ${GLEW_LIBRARIES})
else()
    message(STATUS "Cannot find GL libraries")
endif()

В нескольких словах я хочу создать несколько статических библиотекДвижок, в частности, связывает библиотеку graphics с GL и, наконец, связывает их все с исполняемым файлом в корневом каталоге CMakeLists.txt.

Но я заметил, что $ {GLFW3_LIBRARY} - этопустой, и я получил ошибку компоновщика, например, когда я вызываю glfwInit () .Я следовал руководству во время сборки и установки GLFW

cmake .
make
make install

Я считаю, что заголовки и библиотеки находятся в / usr / local / *, но, видимо, CMake не может их найти или, возможно, я что-то не так сделал.

Единственная гипотеза, которая у меня есть, заключается в том, что find_package не знает о glfw3Config.cmake, который находится в deps / glfw / *

1 Ответ

0 голосов
/ 23 февраля 2019

Я взял скрипт из https://github.com/JoeyDeVries/LearnOpenGL/blob/master/cmake/modules/FindGLFW3.cmake и поместил его в папку cmake.Затем в CMakeLists.txt я добавил

list(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake")

Теперь все работает правильно

Спасибо @ Цыварев

...