Я хочу сделать кроссплатформенную настройку для графики.Я пытаюсь собрать SDL2 с помощью cmake.Вот мой текущий CMakeLists.txt:
cmake_minimum_required(VERSION 3.5.0 FATAL_ERROR)
set(PROJECT_NAME "OpenGLZero")
set(SDL2_DIR "external/SDL2-2.0.9")
set(GLEW_SOURCE_DIR "external/glew-2.1.0")
set(GLM_SOURCE_DIR "external/glm-0.9.9.3")
set(BUILD_SHARED_LIBS OFF CACHE BOOL "")
find_package(OpenGL REQUIRED)
add_subdirectory(${SDL2_DIR})
include_directories(${GLEW_SOURCE_DIR}/include
${GLM_SOURCE_DIR}
${SDL2_DIR}/include)
# building glew as a static library
add_library(glew STATIC
${GLEW_SOURCE_DIR}/src/glew.c
${GLEW_SOURCE_DIR}/include)
add_definitions(-DGLEW_STATIC)
add_executable(${PROJECT_NAME} src/main.cpp)
target_link_libraries(${PROJECT_NAME} SDL2main SDL2 ${OPENGL_LIBRARY} glew)
Он не может найти файл SDL2.dll
в Windows (присутствует в build\external\SDL2-2.0.9\Release\
), хотя я связываю библиотеки.Связывание с использованием ${SDL2_LIBRARIES}
здесь не работает, возможно, потому что я не использую find_package
, который включает в себя все пути.Я не использую find_package
, потому что я хочу собрать SDL2 с нуля вместо передачи двоичных файлов для Windows и Mac и установки SDL2 в Linux с помощью apt.Что я должен сделать, чтобы разрешить общий метод поиска библиотек SDL2 без предоставления двоичных файлов?