无法使用CMake找到软件包GLFW

时间:2019-02-22 20:38:58

标签: opengl cmake glfw

我的项目结构如下:

  • CMakeLists.txt
  • 单位
    • gle
    • 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中。 / p>

但是我注意到 $ {GLFW3_LIBRARY} 为空,例如,当我调用 glfwInit()时出现链接器错误。在GLFW的构建和安装过程中,我遵循了指南

cmake .
make
make install

我相信标头和库位于/ usr / local / *中,但是显然CMake无法找到它们,或者我做错了。

我唯一的假设是find_package不了解deps / glfw / *中的glfw3Config.cmake

1 个答案:

答案 0 :(得分:0)

我从https://github.com/JoeyDeVries/LearnOpenGL/blob/master/cmake/modules/FindGLFW3.cmake中提取了脚本并将其放入cmake文件夹。然后在CMakeLists.txt中添加

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

现在一切正常

感谢@Tsyvarev