2011-10-26 6 views
6

CMake kullanılarak geliştirilen daha büyük bir C++ projesine bir şeyler eklemeye çalışıyorum. Eklediğim kısımda Magick ++ kullanmak istiyorum. SadeceCMake (C++, ImageMagick) içinde yolu ayarlama

g++ -o example example.cxx 

ile benim küçük örnek program

#include <Magick++.h> 

int main() 
{ 
    Magick::Image image; 

    return 0; 
} 

derleme Eğer "Magick ++. H" bulamazsa beri

başarısız.

Ben

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

kullanıyorum ben "tanımsız referansı" hataları olsun.

Ben http://www.imagemagick.org/script/magick++.php yönergeleri izleyin ve nasıl çalıştığını

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

kullanarak derlemek edin.

Şimdi: Bunu CMake kullanan daha büyük projeye nasıl eklerim? CMakeLists.txt dosyasını nasıl değiştirmeliyim?

cevap

14

Temel CMake dağıtımında FindImageMagick.cmake modülü var, bu yüzden şanslısınız. Sen CMakeLists.txt için böyle bu şey eklemek gerekir: Bundan sonra

find_package(ImageMagick COMPONENTS Magick++) 

, aşağıdaki değişkenleri kullanabilirsiniz:

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 

Yani sadece

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

sayesinde yapabilirsiniz! Bu bir cazibe gibi çalışır. – boothby81