2017-01-13 3 views
3

Ich bin neu in C++ und CMake. Ich installierte Cairo Bibliothek wie geschrieben here über Port. Jetzt möchte ich Kairo zu meinem Projekt hinzufügen. Ich schrieb die CmakeLists.txt-Befehle wie gezeigt here.Cairo Bibliothek und Cmake

cmake_minimum_required(VERSION 3.6) 
project(HelloOpenGL) 

set(CMAKE_CXX_STANDARD 11) 

set(SOURCE_FILES main.cpp) 
add_executable(HelloOpenGL ${SOURCE_FILES}) 

#find_package(ImageMagick COMPONENTS Magick++) 
#include_directories(${ImageMagick_INCLUDE_DIRS}) 
#target_link_libraries(HelloOpenGL ${ImageMagick_LIBRARIES}) 

find_package(Cairo) 
include_directories(${Cairo_INCLUDE_DIRS}) 
target_link_libraries(HelloOpenGL ${Cairo_LIBRARIES}) 

if(CAIRO_FOUND) 
    message("Cairo found") 
    else() 
    message("Cairo not found") 
    endif() 

Aber es funktioniert nicht, bekomme ich diese Ausgabe -

CMake Warning at CMakeLists.txt:16 (find_package): 
    By not providing "FindCairo.cmake" in CMAKE_MODULE_PATH this project has 
    asked CMake to find a package configuration file provided by "Cairo", but 
    CMake did not find one. 

    Could not find a package configuration file provided by "Cairo" with any of 
    the following names: 

    CairoConfig.cmake 
    cairo-config.cmake 

    Add the installation prefix of "Cairo" to CMAKE_PREFIX_PATH or set 
    "Cairo_DIR" to a directory containing one of the above files. If "Cairo" 
    provides a separate development package or SDK, be sure it has been 
    installed. 

Helfen Sie mir richtig kairo aufzunehmen, benutzen Sie bitte

+0

Welche Version von CMake verwenden Sie? – fedepad

Antwort

3

Das Problem ist, dass Ihre Version von CMake nicht über (durch übrigens, nicht einmal die neueste Entwicklungsversion von CMake hat es ...) die Datei FindCairo.cmake, die Sie benötigen, um den Befehl find_package(Cairo) auszuführen, und Sie haben diese Datei nicht in Ihr Paket aufgenommen.
Eine Lösung ist es, eine FindCairo.cmake Datei aus dem Internet zu greifen, erstellen Sie ein cmake Verzeichnis im Stammverzeichnis Ihres Projektes und hat in CMakeLists.txt der zusätzlichen Zeile

set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/cmake") 

so Ihre Schnipsel aus CMakeLists.txt aussehen würden:

Wenn Sie kein bereits vorhandenes FindCairo.cmake verwenden (zB Cairo, das Sie installiert haben, könnte eine solche Datei enthalten), müssen Sie eines schreiben oder eine alternative Möglichkeit finden, das Paket einzuschließen.

+0

Ich habe versucht, was das, aber das Problem wurde nur gelöst, wenn ich Cairo durch 'brew install cairo 'neu installiert. Jetzt gibt es ein neues Problem. Die IDE kann nicht finden. Aber auch funktioniert gut. –

+0

Allerdings erhalte ich diese Fehlermeldung auf Kompilation: 'undefinierte Symbole für Architektur x86_64: "_cairo_arc", verwiesen von: ... ld: Fehler: Symbol (e) nicht für die Architektur x86_64 Klirren gefunden Linker Befehl fehlgeschlagen mit Exit Code 1 (benutze -v um den Aufruf zu sehen) make [3]: *** [HelloOpenGL] Fehler 1 make [2]: *** [CMakeFiles/HelloOpenGL.dir/all] Fehler 2 make [1]: *** [CMakeFiles/HelloOpenGL.dir/rule] Fehler 2 make: *** [HelloOpenGL] Error 2' –

Verwandte Themen