2014-12-14 16 views
11

Come si può collegare GLEW a un progetto con CMake?Collegamento di GLEW con CMake

Abbiamo cercato di collegare GLEW al nostro progetto utilizzando CMake per almeno 3 ore senza esito positivo, quindi ogni aiuto è accettato.

sto usando il FindGLEW.cmake che viene fornito con CMake 3.1.0

CMakeLists.txt

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

Variabili d'ambiente

enter image description here enter image description here

Sto usando MinGW w64 per compilare i sorgenti e abbiamo collegato correttamente GLFW e GLM copiando gli include e le librerie libere alle loro rispettive cartelle, ma dopo aver fatto lo stesso con GLEW, CMake non riusciva ancora a trovarlo.

Scusate se non sono stato abbastanza chiaro mentre formulavo la domanda. Fornirò qualsiasi informazione aggiuntiva richiesta.


Edit: Sono riuscito a collegare i file header specificando la loro posizione nel file Cache CMake, anche se mi sto undefined reference to Glew funzioni come glewInit().

+0

Non riesce a localizzare GLEW o semplicemente non collega? –

+0

Non riesce a trovare GLEW, anche se penso che siamo riusciti a trovare una volta i file header, ma non le librerie. –

+0

Le variabili di ambiente di sistema sono quelle? Non lo so che CMake li controlla. Dovresti specificare quelle invece come variabili di CMake quando esegui cmake o all'interno di cmake-gui. È anche possibile modificare la cache di CMake per puntare ai posti giusti. –

risposta

16

Tipici script CMake come FindGLEW definiranno le variabili che specificano i percorsi e i file necessari per il progetto. Se lo script non può identificare automaticamente i percorsi corretti (di solito a causa di un percorso di installazione non standard, che va bene), lascia queste variabili a te per riempire.

Con la riga di comando CMake, si utilizza il -D flag per definire e impostare il valore di una determinata variabile. Altre interfacce CMake, come CMake-gui o un'integrazione IDE, ti danno questa capacità in un altro modo.

Tuttavia, è possibile modificare direttamente la cache (CMakeCache.txt) e vedere cosa CMake sta utilizzando o cancellare completamente la cache. Dovrai rieseguire il CMake affinché rilevi le tue modifiche.

Quando si tratta di collegamento, è quando è necessario dire a CMake quali librerie collegarsi. Utilizzare il comando link_libraries con ciò che lo script automatizzato fornisce.

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

Il segreto di find_package(GLEW) è in FindGLEW.cmake file con CMake installazione.

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

I comandi find_path e find_library trovano percorsi nei percorsi di sistema standard. Se vuoi che trovino i percorsi nelle directory definite dall'utente, dovresti dirglielo. Per esempio:

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) 

Riferimento:

1

stavo lottando duramente per collegamento Glew a cmake attraverso la linea di comando su Mac. Questo potrebbe essere utile ma non sono sicuro :) Ti guiderò passo passo su quello che ho fatto.

Ho installato la sorgente Cmake dal web.

Poi sono andato all'interno della cartella cmake nel terminale e digitato

./bootstrap && make && make install 

(Questo installerà gli strumenti della riga di comando cmake sulla nostra piattaforma OS)

Ho alcuni file di esercitazione. Voglio che cmake generi file xcode per me per tutti quei file di esercizi (ad esempio triangles.cpp, shader.cpp ecc.) Così ho creato una directory nella cartella dei file di esercizi.

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

A questo punto, Cmake suppone di installare tutti i file xcode che includevano le librerie corrette. Ma c'è stato un errore:

$ 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! 

Poi, per essere sicuro di avere installato GLEW e tutte le sue librerie correttamente, mi sono imbattuto

$brew install glew 

Sì, ho installato Glew già ma non è stato collegato. Visualizzato l'avviso di seguito:

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

Poi ho eseguito i seguenti comandi:

$ brew unlink glew 
$ brew link glew 

E ho risolto l'errore. Quindi assicurati di aver collegato tutto. Spero che questo ti aiuti.

Happy Coding :)