2011-10-26 14 views
6

में पथ सेट करें मैं सीएमके का उपयोग करके विकसित एक बड़ी सी ++ परियोजना में कुछ जोड़ने की कोशिश कर रहा हूं। जिस हिस्से में मैं जोड़ रहा हूं, मैं मैजिक ++ का उपयोग करना चाहता हूं।सीएमके (सी ++, छवि मैगिक)

मैं केवल

g++ -o example example.cxx 

के साथ अपने छोटा सा उदाहरण कार्यक्रम

#include <Magick++.h> 

int main() 
{ 
    Magick::Image image; 

    return 0; 
} 

संकलन कर रहा हूँ अगर यह विफल रहता है, क्योंकि यह "Magick ++। ज" नहीं मिल रहा है।

अगर मैं

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

उपयोग कर रहा हूँ मैं "अपरिभाषित संदर्भ" त्रुटियों मिलता है।

अगर मैं http://www.imagemagick.org/script/magick++.php पर दिए गए निर्देशों का पालन करें और

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

यह काम करता है का उपयोग कर संकलन।

अब: मैं इसे बड़े परियोजना में कैसे शामिल करूं जो सीएमके का उपयोग करता है? मुझे CMakeLists.txt को कैसे बदलना है?

उत्तर

14

बुनियादी सीमेक वितरण में FindImageMagick.cmake मॉड्यूल है, इसलिए आप भाग्यशाली हैं। आप CMakeLists.txt को कुछ इस तरह जोड़ना चाहिए इस:

find_package(ImageMagick COMPONENTS Magick++) 

उसके बाद, आप निम्न चर का उपयोग कर सकते हैं:

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 

तो आप बस

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

धन्यवाद कर सकते हैं! यह एक आकर्षण की तरह काम करता है। – boothby81