Связывание GLEW с CMake

Как вы можете связать GLEW с проектом с CMake?

мы пытались связать GLEW с нашим проектом, используя CMake, по крайней мере, 3 часа без успеха, поэтому любая помощь принимается.

Я использую FindGLEW.с CMake, который приходит с работы CMake 3.1.0

CMakeLists.txt

find_package(GLEW REQUIRED)
if (GLEW_FOUND)
    include_directories($(GLEW_INCLUDE_DIRS))
endif()

Переменные Среды

enter image description hereenter image description here

Я использую MinGW w64 для компиляции и мы успешно связали GLFW и GLM, просто скопировав includes и libs в соответствующие папки, но после того, как мы сделали то же самое с GLEW, CMake все еще не мог найти его.

Извините, если я не был достаточно ясен при формулировании вопроса. Я предоставлю любую дополнительную информацию.


Edit: мне удалось связать файлы заголовков, указав их местоположение в файле кэша CMake, хотя я получаю неопределенную ссылку на функции glew как glewInit().

3 ответов


типичные сценарии CMake, такие как FindGLEW, будут определять переменные, которые определяют пути и файлы, необходимые вашему проекту. Если сценарий не может автоматически определить правильные пути (обычно из-за нестандартного расположения установки, что нормально), то он оставляет эти переменные для заполнения.

С помощью командной строки CMake вы используете флаг-D для определения и установки значения данной переменной. Другие интерфейсы CMake, такие как CMake-gui или интеграция IDE, дают вам это возможность каким-то другим способом.

однако вы можете изменить кэш напрямую (CMakeCache.txt) и посмотреть, что CMake использует там или просто очистить кэш вообще. Вам придется перезапустить CMake, чтобы забрать ваши изменения.

когда дело доходит до связывания, именно тогда вам нужно сказать CMake, какие библиотеки связывать. Используйте link_libraries команда с тем, что дает вам автоматический скрипт.

find_package(GLEW REQUIRED)
if (GLEW_FOUND)
    include_directories(${GLEW_INCLUDE_DIRS})
    link_libraries(${GLEW_LIBRARIES})
endif()

секрет find_package(GLEW) находится в FindGLEW.файл cmake с установкой cmake.

find_path(GLEW_INCLUDE_DIR GL/glew.h)
find_library(GLEW_LIBRARY NAMES GLEW glew32 glew glew32s PATH_SUFFIXES lib64)

на find_path и find_library команды находят пути в стандартных системных путях. Если вы хотите, чтобы они нашли пути в пользовательских каталогах, вы должны сказать им. Для пример:

set(CMAKE_PREFIX_PATH "d:/libs/glew-1.10.0")
set(CMAKE_LIBRARY_PATH "d:/libs/glew-1.10.0/lib/Release/Win32/")
find_package(GLEW REQUIRED)

ссылки:


Я изо всех сил пытался связать glew с cmake через командную строку на mac. Это может быть полезно, но я не уверен :) я проведу вас через шаг за шагом того, что я сделал.

Я установил источник Cmake из web.

затем я вошел в папку cmake в терминале и набрал

./bootstrap && make && make install 

(это установит инструменты командной строки cmake на нашей платформе ОС)

у меня есть несколько файлов упражнений. Я хочу, чтобы cmake генерировал Xcode файлы для меня для всех этих файлов упражнений (ex. треугольники.cpp, шейдер.cpp и т. д.), Поэтому я сделал каталог внутри папки файлов упражнений.

$ mkdir xcode 
$ cd xcode
$ cmake -G "Xcode" ..

на данный момент Cmake предполагает установить все файлы xcode, которые включали правильные библиотеки. Но произошла ошибка:--7-->

$ cmake -G "Xcode" ..
CMake Warning (dev) at CMakeLists.txt:3 (cmake_minimum_required):
Compatibility with CMake < 2.4 is not supported by CMake >= 3.0.
This warning is for project developers.  Use -Wno-dev to suppress it.

system name is: Darwin-14.1.0
system processor is: x86_64
-- Could NOT find GLEW (missing:  GLEW_INCLUDE_DIR GLEW_LIBRARY) 
-- Could NOT find Doxygen (missing:  DOXYGEN_EXECUTABLE) 
-- Using Cocoa for window creation
-- Using NSGL for context creation
-- Building GLFW only for the native architecture

CMake Error: The following variables are used in this project, but they are  set to NOTFOUND.
Please set them or make sure they are set and tested correctly in the CMake files:
GLEW_LIBRARY
linked by target "TextureLoader" in directory /Users/Mydir/Desktop/Exercise/Exercise Files

-- Configuring incomplete, errors occurred!

затем, чтобы убедиться, что я правильно установил GLEW и все его библиотеки, я запустил

$brew install glew 

Да, я уже установил glew, но он не был связан. См. предупреждение ниже:

Warning: glew-1.12.0 already installed, it's just not linked

затем я выполнил следующие команды:

$ brew unlink glew 
$ brew link glew

и я решил ошибку. Поэтому просто убедитесь, что вы связали glew. Надеюсь, это поможет.

Удачи В Кодировании :)