我正在imagick-v3.1.0RC2
CentOS 5.5 上安装软件包。我也安装了 ImageMagick 6.7.9-9,但make
步骤上有问题。
问题是它找不到包含的文件:
/usr/local/include/ImageMagick/wand/magick/accelerate.h:25:31:错误:magick/morphology.h:没有这样的文件或目录
如果我将文件夹复制magick
到其中/usr/local/include/ImageMagick/wand/magick/magick
,它会找到它,但会说缺少其他文件,magic/xxx.h
所以我必须一次又一次地复制 magick ,应该有办法解决吗?
我创建了一个符号链接,但它在第 25 行的 /ImageMagick/wand/magick
ln -s ../magick magick
文件内仍然存在相同的问题accelerate.h
#include <magick/random_.h>
我也尝试过做
make --include-dir=/usr/local/include/ImageMagick/ --include-dir=/usr/local/include/ImageMagick` and `make -I /usr/local/include/ImageMagick/ -I /usr/local/include/ImageMagick
我最终运行make -n
以显示 make 将执行的所有命令,然后将-I /usr/local/include/ImageMagick/ -I /usr/local/include/ImageMagick
其添加到其中并手动一一运行。
难道没有更快的办法吗?
编辑,解决:
诀窍是找到文件所在的位置find / --name "missing.file"
,然后在我运行 Make ie 的文件夹中添加符号链接/usr/src/imagick-v3.1.0RC2/
ln -s usr/local/include/ImageMagick/magick magick
和
ln -s usr/local/include/ImageMagick/wand wand
答案1
尝试添加 -I 直到 wand 目录,例如-I/usr/local/include/ImageMagick/wand
或 -I/usr/local/include/ImageMagick/wand/magick
答案2
抱歉,您似乎make
完全误解了。我假设我们正在谈论 GNU make 来回答这个问题,尽管有些人似乎完全否认其他风格的存在。
通过这两行代码您可以实现什么:
make --include-dir=/usr/local/include/ImageMagick/ --include-dir=/usr/local/include/ImageMagick
make -I /usr/local/include/ImageMagick/ -I /usr/local/include/ImageMagick
就是您将这些参数传递给make
.嗯,这是合法的,但它给出了要包含到 / 中的包含Makefile
,GNUmakefile
而不是进程调用的任何编译器使用的包含make
。
为了实现这一点,最好的运行方式是:
make -npf /dev/null
(管道进入less
左右)
了解默认规则。假设您希望 C 或 C++ 编译器找到这些文件并假设 make 过程使用默认规则和/或约定,您应该能够设置以下变量之一:
CPPFLAGS
(C 预处理器标志)CFLAGS
(C 编译器标志)CXXFLAGS
(C++ 编译器标志)
要查看具体的详细信息你的 make
文件签出
make -np
# or ...
make -npf Makefile
以防重新定义默认规则。
根据make
进程的内部结构,这将有助于将编译器指向正确的位置。例如如果使用GCC进行编译和链接CPPFLAGS
应该可以正常工作。在您的示例中,您希望make
这样调用:
make CPPFLAGS="-I /usr/local/include/ImageMagick/ -I /usr/local/include/ImageMagick"
假设您不仅想使用默认目标,还想install
使用名为您的目标:
make CPPFLAGS="-I /usr/local/include/ImageMagick/ -I /usr/local/include/ImageMagick" install
...另一种选择是将变量作为环境变量传递make instead
到命令行上:
CPPFLAGS="-I /usr/local/include/ImageMagick/ -I /usr/local/include/ImageMagick" make
...以类似的方式,您可以设置定义 ( -DNAMEOFDEFINE=VALUE
)。