C编译致命错误'文件未找到'来自ImageMagick安装Mac OS

时间:2014-10-14 03:26:15

标签: c macos imagemagick

我正在尝试编译一个需要Image Magick的MagickWand.h的C程序:

#include "wand/MagickWand.h"

但我的Image Magick是通过我的Mac上的Homebrew安装的,所以我将include更改为实际位置:

#include </usr/local/Cellar/imagemagick/6.8.9-7/include/ImageMagick-6/wand/MagickWand.h>

然而,当我编译程序时,我收到以下错误:

/usr/local/Cellar/imagemagick/6.8.9-7/include/ImageMagick-6/wand/MagickWand.h:71:10: fatal error: 'wand/method-attribute.h' file not found
#include "wand/method-attribute.h"

现在我已经进入.h文件,当这个错误突然出现并改变它们的#includes以便它们被正确指向(因为这似乎是问题),但这里总是有一个新的错误而且我不想花费数小时手动更新这些因为Homebrew安装。有没有人有任何关于如何解决此问题的建议,而无需手动更新每个文件?我不确定问题究竟是什么,所以也许有更优雅的解决方案。

1 个答案:

答案 0 :(得分:0)

您的代码应包含 MagickWand 库作为系统标头,并保留通用路径。这将使您的未来编译在系统/库更新时不会中断。

#include <wand/MagickWand.h>

通过设置预处理器包含标记-I,以及将链接/库选项与-L&amp;链接,告诉您的C编译器自制软件安装ImageMagick的位置。 -l标志。

示例:

clang -I/usr/local/Cellar/imagemagick/6.8.9-7/include/ImageMagick-6 \
      myProject.c -o myProject.o \
      -L/usr/local/Cellar/imagemagick/6.8.9-7/lib \
      -lMagickWand-6.Q16 \
      -lMagickCore-6.Q1

为简化整个过程,ImageMagick提供MagickWand-config实用程序。这将为您处理库,包含和定义。

示例:

CFLAGS=$(MagickWand-config --cflags)
LFLAGS=$(MagickWand-config --libs)
clang $CFLAGS myProject.c -o myProject.o $LFLAGS