2014-12-14 3 views
11

Как вы можете связать 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 here enter image description here

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

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


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

+0

Не удается найти GLEW или просто не связываться? –

+0

Не удается найти GLEW, хотя мне кажется, что нам удалось найти файлы заголовков один раз, но не библиотеки. –

+0

Являются ли эти переменные среды системы? Я не знаю, что CMake проверяет их. Вы указывали бы их вместо переменных CMake либо при запуске cmake, либо в cmake-gui. Вы также можете изменить кеш CMake, чтобы указать на нужные места. –

ответ

16

Типичные сценарии 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() 
6

Секрет 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) 

Ссылка:

1

Я усердно пытаются ссылку GLEW в CMake через командную строку на макинтош. Это может быть полезно, но я не уверен, что я пройду через шаг за шагом, что я сделал.

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

Тогда я пошел в папке CMake в терминале и напечатал

./bootstrap && make && make install 

(это создаст инструменты командной строки CMake на нашей платформе OS)

У меня есть несколько файлов упражнений. Я хочу, чтобы cmake генерировал файлы xcode для меня для всех этих файлов упражнений (например, triangles.cpp, shader.cpp и т. Д.). Поэтому я создал папку в папке с файлами упражнений.

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

На этом этапе Cmake предположим, что для установки всех файлов xcode, содержащих правильные библиотеки. Но произошла ошибка:

$ 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. Надеюсь это поможет.

Happy Code:

Смежные вопросы