2011-10-26 78 views
6

Tôi đang cố thêm một thứ gì đó vào một dự án C++ lớn hơn được phát triển bằng CMake. Trong phần tôi đang thêm, tôi muốn sử dụng Magick ++.Đặt đường dẫn trong CMake (C++, ImageMagick)

Nếu tôi chỉ biên soạn chương trình nhỏ ví dụ của tôi

#include <Magick++.h> 

int main() 
{ 
    Magick::Image image; 

    return 0; 
} 

với

g++ -o example example.cxx 

nó không thành công vì nó không tìm thấy "Magick ++. H".

Nếu tôi đang sử dụng

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

tôi nhận được "tài liệu tham khảo không xác định" lỗi.

Nếu tôi làm theo hướng dẫn trên http://www.imagemagick.org/script/magick++.php và biên dịch sử dụng

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

nó hoạt động.

Bây giờ: Làm cách nào để kết hợp điều này vào dự án lớn hơn sử dụng CMake? Làm cách nào để thay đổi CMakeLists.txt?

Trả lời

14

Có mô-đun FindImageMagick.cmake trong bản phân phối CMake cơ bản, vì vậy bạn may mắn. Bạn nên thêm một cái gì đó như thế này này đến CMakeLists.txt:

find_package(ImageMagick COMPONENTS Magick++) 

Sau đó, bạn có thể sử dụng các biến sau:

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 

Vì vậy, bạn có thể làm chỉ

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

cảm ơn! hoạt động như một sự quyến rũ. – boothby81

Các vấn đề liên quan