2011-10-26 8 views
6

私はCMakeを使って開発されたより大きなC++プロジェクトに何かを追加しようとしています。私が追加している部分では、私はMagick ++を使いたい。CMakeでパスを設定する(C++、ImageMagick)

私はそれが見つからないので、それが失敗した

g++ -o example example.cxx 

と私の小さなプログラム例

#include <Magick++.h> 

int main() 
{ 
    Magick::Image image; 

    return 0; 
} 

をコンパイルしていた場合は、 "魔術++を。時間"。

私は、 "未定義の参照" エラーが発生する

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` 

を使用してコンパイルした場合、それは動作します。

Now: これは、CMakeを使用するより大きなプロジェクトにどのように組み込むのですか?どうすればCMakeLists.txtを変更する必要がありますか?

答えて

14

基本的な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}) 
+0

感謝を行うことができます!それは魅力のように働く。 – boothby81

関連する問題