2011-10-26 14 views
6

Estoy tratando de agregar algo a un proyecto de C++ más grande que se desarrolla con CMake. En la parte que estoy agregando, quiero usar Magick ++.Establecer ruta en CMake (C++, ImageMagick)

Si sólo estoy compilando mi pequeño programa de ejemplo

#include <Magick++.h> 

int main() 
{ 
    Magick::Image image; 

    return 0; 
} 

con

g++ -o example example.cxx 

se produce un error, ya que no encuentra "Magick ++. H".

Si estoy usando

g++ -I /usr/include/ImageMagick -o example example.cxx 

recibo mensajes de error de "referencia" indefinido.

Si sigo las instrucciones sobre http://www.imagemagick.org/script/magick++.php y compilar usando

g++ `Magick++-config --cxxflags --cppflags` -o example example.cxx `Magick++-config --ldflags --libs` 

funciona.

Ahora: ¿Cómo incorporo esto en el proyecto más grande que utiliza CMake? ¿Cómo debo cambiar el CMakeLists.txt?

Respuesta

14

Hay un módulo FindImageMagick.cmake en la distribución básica de CMake, por lo que tiene suerte. Usted debe agregar algo como esto esta a la CMakeLists.txt:

find_package(ImageMagick COMPONENTS Magick++) 

Después de eso, puede utilizar las siguientes variables:

ImageMagick_FOUND     - TRUE if all components are found. 
ImageMagick_INCLUDE_DIRS    - Full paths to all include dirs. 
ImageMagick_LIBRARIES    - Full paths to all libraries. 
ImageMagick_<component>_FOUND  - TRUE if <component> is found. 
ImageMagick_<component>_INCLUDE_DIRS - Full path to <component> include dirs. 
ImageMagick_<component>_LIBRARIES 

para que pueda hacer sólo

include_directories(${ImageMagick_INCLUDE_DIRS}) 
target_link_libraries(YourApp ${ImageMagick_LIBRARIES}) 
+0

gracias! eso funciona como un encanto. – boothby81