Я немного новичок в cmake и совершенно новичок в glew, glfw и тому подобное.Я следую за каналом YouTube , чтобы узнать больше об игровых движках и программировании.
Моя проблема связана с подключением статической библиотеки glew в моем проекте с использованием cmake.
Во-первых,Я начинаю с исходного кода glew http://mcs.une.edu.au/doc/glew-devel/index.html.
. Я компилирую его следующим образом:
cd build; cmake ./cmake; make glew_s
Это добавляет каталог lib в каталог сборки с помощью libGLEW.a
Сокращенная версия моего CMakeLists.txt выглядит следующим образом:
cmake_minimum_required (VERSION 3.5 FATAL_ERROR)
project (TestProject CXX)
set(CMAKE_CXX_FLAGS "-std=c++11")
###########################
# GLEW
###########################
add_subdirectory(${CMAKE_SOURCE_DIR}/Dependencies/GLEW)
target_link_libraries(${PROJECT_NAME} glew)
и в Dependencies/GLEW
у меня есть еще CMakeLists.txt
:
# Add glew source and header files
file(GLOB_RECURSE glew-lib ${CMAKE_CURRENT_SOURCE_DIR}/lib/*)
file(GLOB_RECURSE glew-headers ${CMAKE_CURRENT_SOURCE_DIR}/include/GL/*)
add_library(glew ${glew-lib} ${glew-headers})
target_include_directories(glew PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include/GL")
Я положил копиюФайл libGLEW.a
помещается в каталог lib, а каталог include копируется из каталога include исходного кода glew.Он содержит каталог GL, который содержит заголовочные файлы glew.h
, wglew.h
, eglew.h
и glxew.h
.
Когда я запускаю cmake
, я получаю ошибку:
CMake Error: Cannot determine link language for target "glew".
CMake Error: CMake can not determine linker language for target: glew
Исходный код glew также имеет каталог src с glew.c
в нем, но если я положу его в каталог libs
и включу его в Dependencies/GLEW/CMakeLists.txt
, например:
# Add glew source and header files
file(GLOB_RECURSE glew-lib ${CMAKE_CURRENT_SOURCE_DIR}/lib/*.c)
file(GLOB_RECURSE glew-headers ${CMAKE_CURRENT_SOURCE_DIR}/include/GL/*)
add_library(glew ${glew-lib} ${glew-headers})
target_include_directories(glew PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include")
Я получаю сообщение об ошибке:
CMake Error: Error required internal CMake variable not set, cmake may
be not be built correctly.
Missing variable is: CMAKE_C_COMPILE_OBJECT
CMake Error: Error required internal CMake variable not set, cmake may
be not be built correctly.
Missing variable is: CMAKE_C_CREATE_STATIC_LIBRARY
Наконец, я попытался просто включить glew.c
и заголовки в корень CMakeLists.txt
, например:
#########################
# GLEW
#########################
include_directories("${CMAKE_SOURCE_DIR}/Dependencies/GLEW/lib/")
include_directories("${CMAKE_SOURCE_DIR}/Dependencies/GLEW/include/GL/")
На этом cmake
закончится, но не сможет скомпилироваться, сказав, что классы не называют тип и / или не объявлены в этой области.
Любая помощь приветствуется.У меня сложилось впечатление, что libGLEW.a
- это статическая библиотека, и все, что мне нужно сделать, это связать и скомпилировать ее вместе с заголовками, но это не сработало.