包含问题

包含问题

我正在imagick-v3.1.0RC2CentOS 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.嗯,这是合法的,但它给出了要包含到 / 中的包含MakefileGNUmakefile而不是进程调用的任何编译器使用的包含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)。

相关内容