2016-06-11 7 views
0

jeder.Über Magick ++, wie schreibe ich die CMakeLists?

Dort sind meine CMakeLists.

cmake_minimum_required(VERSION 3.5) 
project(Blah) 

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") 

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

find_package(ImageMagick) 
find_package(ImageMagick COMPONENTS Magick++) 
find_package(ImageMagick COMPONENTS convert) 
find_package(ImageMagick COMPONENTS Magick++ convert) 

include_directories(${ImageMagick_INCLUDE_DIRS}) 
target_link_libraries(Blah ${ImageMagick_LIBRARIES}) 

Und mein Code sieht so aus.

#include <iostream> 
#include <Magick++.h> 
using namespace std; 

int main(int argc, char **argv) { 
    Magick::Image image("640*480", "white"); 
} 

Es meldet einige Fehler wie undefined reference to 'Magick::Color::Color(char const*)'. Und die Lösung scheint, dass ich etwas wie g++ 'Magick++-config --cxxflags --cppflags' -o example example.cxx 'Magick++-config --ldflags --libs' schreiben sollte.

Leider weiß ich einfach nicht, wie man eine korrekte CMakeLists Artikel dafür schreiben, oder, für die ganze Magick ++. (Ich habe ein paar Grundlagen über CMake gelernt. Aber nutzlos, leider.)

Vielen Dank, wenn Sie mir helfen könnten!

+0

Was ist der Inhalt der Variablen 'ImageMagick_LIBRARIES'? Sie können es mit 'message (" $ {ImageMagic_LIBRARIES} ")' ausgeben. – Tsyvarev

+0

Vielen Dank für die freundlichen Antworten, die Sie mir geben! Seit meiner Abschlussprüfung kommt. Also muss ich nach meiner Prüfung noch einmal versuchen ... Beste Wünsche an euch alle! –

Antwort

0

ImageMagick wird mit einem Dienstprogramm Magick++-config geliefert. Da Sie bereits CMAKE_CXX_FLAGS direkt einstellen, können Sie auch Magick++-config über cxx & lib Flags fragen.

cmake_minimum_required(VERSION 3.5) 
project(Blah) 

# Find where Magick++-config lives 
find_program(MAGICK_CONFIG "Magick++-config") 
# Ask about CXX and lib flags/locations 
execute_process(COMMAND "${MAGICK_CONFIG}" "--cxxflags" OUTPUT_VARIABLE MAGICK_CXX_FLAGS) 
execute_process(COMMAND "${MAGICK_CONFIG}" "--libs" OUTPUT_VARIABLE MAGICK_LD_FLAGS) 
# Remove trailing whitespace (CMAKE warns about this) 
string(STRIP "${MAGICK_CXX_FLAGS}" MAGICK_CXX_FLAGS) 
string(STRIP "${MAGICK_LD_FLAGS}" MAGICK_LD_FLAGS) 
# Append all flags to CMAKE_CXX_FLAGS 
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 ${MAGICK_CXX_FLAGS} ${MAGICK_LD_FLAGS}") 

set(SOURCE_FILES main.cpp) 

add_executable(Blah ${SOURCE_FILES}) 

Aber! CMake ist bereits sehr gut im Umgang mit Bibliotheken & Abhängigkeiten. Dies sollte auch funktionieren.

cmake_minimum_required(VERSION 3.5) 
project(Blah) 

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") 

set(SOURCE_FILES main.cpp) 

add_executable(Blah ${SOURCE_FILES}) 
add_definitions(-DMAGICKCORE_QUANTUM_DEPTH=16) 
add_definitions(-DMAGICKCORE_HDRI_ENABLE=0) 
find_package(ImageMagick COMPONENTS Magick++) 
include_directories(${ImageMagick_INCLUDE_DIRS}) 
target_link_libraries(Blah ${ImageMagick_LIBRARIES}) 
+0

Hallo Eric. Hast du deine 'find_package' Version auf einem Mac ausprobiert? Ich kann es nicht funktionieren lassen, und das Modul auf GitHub scheint nur Windows Zeug darin zu haben https://github.com/Kitware/CMake/blob/master/Modules/FindImageMagick.cmake –

+0

Odd. Gerade lief, und fand '/ usr/local/lib/libMagick ++ - 6.Q16.dylib 'gerade gut. Vielleicht wird 'ImageMagick- [6 | 7]' benötigt? – emcconville

Verwandte Themen