Установить путь в CMake (C ++, ImageMagick) - PullRequest
8 голосов
/ 26 октября 2011

Я пытаюсь добавить что-то в более крупный проект C ++, который разработан с использованием CMake.В той части, которую я добавляю, я хочу использовать Magick ++.

Если я собираю только небольшую примерную программу

#include <Magick++.h>

int main()
{
  Magick::Image image;

  return 0;
}

с

g++ -o example example.cxx

itне удается, так как не находит "Magick ++. h".

Если я использую

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`

это работает.

Теперь: как мне включить это в более крупный проект, использующий CMake?Как мне изменить CMakeLists.txt?

1 Ответ

18 голосов
/ 26 октября 2011

В базовом дистрибутиве CMake есть модуль 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})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...