cmake imagemagic-Cmake时报错:Could NOT find ImageMagick

问题描述

Cmake时报错:Could NOT find ImageMagick

安装zimg时报错

CMake Error at /usr/share/cmake-2.8/Modules/FindPackageHandleStandardArgs.cmake:97 (message):
Could NOT find ImageMagick (missing: ImageMagick_MagickWand_LIBRARY) (found
version "6.8.7-2")
Call Stack (most recent call first):
/usr/share/cmake-2.8/Modules/FindPackageHandleStandardArgs.cmake:291 (_FPHSA_FAILURE_MESSAGE)
/usr/share/cmake-2.8/Modules/FindImageMagick.cmake:208 (FIND_PACKAGE_HANDLE_STANDARD_ARGS)
CMakeLists.txt:79 (find_package)

CmakeLists.txt 79行内容为:

find_package(ImageMagick COMPONENTS MagickWand REQUIRED)

解决方案

非常抱歉刚看到你的这个问题,我是zimg的作者,这个错误的原因是cmake找不到imagemagick库,因为你通过apt-get或者yum安装的仅仅是imagemagick,而不包括magickwand的开发包。

解决方案有两个,第一种很简单:

找到libmagickwand-dev这个包进行安装,比如在ubuntu中可以使用以下命令

sudo apt-get install libmagickwand-dev

如果是centOS的话可能需要自己查找一下类似的包,或者使用方案二。

sudo yum install ImageMagick-devel

第二种是手动修改cmakelist文件:

首先确保自己的系统里安装了imagemagick,执行这个命令有结果即为安装了:

ls /usr/local/lib/ |grep MagickWand
libMagickWand-6.Q16.a
libMagickWand-6.Q16.la
libMagickWand-6.Q16.so
libMagickWand-6.Q16.so.2
libMagickWand-6.Q16.so.2.0.0

然后你修改一下 src/CMakeLists.txt 文件,在108行开始

# find_package (ImageMagick COMPONENTS MagickWand REQUIRED)
set (ImageMagick_INCLUDE_DIRS "/usr/local/include/ImageMagick-6")
set (ImageMagick_MagickWand_LIBRARY "/usr/local/lib/libMagickWand-6.Q16.so")

先把原先那个find_package注释掉,然后加上后面那两行,在此执行cmake。

这样做是不依靠cmake来查找imagemagick,而自己直接设置库的地址,已经有多位用户确认可以编译成功。

时间: 2024-12-02 10:51:08

cmake imagemagic-Cmake时报错:Could NOT find ImageMagick的相关文章

mysql-cmake编译MySQL时报错:the source directory "xxx" does not exist 怎么解决啊

问题描述 cmake编译MySQL时报错:the source directory "xxx" does not exist 怎么解决啊 系统ubuntu 13.04 gcc version 4.7.3 cmake version 2.8.10.1 安装完cmake后,在mysql解压缩目录下,使用如下命令行: cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/data/mysql -DSYSCONFDIR

vtk-Cmake编译opencv3.0时报错

问题描述 Cmake编译opencv3.0时报错 **CMake Error at D:/VTK7.0/vtk_src/VTK-7.0.0/CMake/vtkModuleAPI.cmake:120 (message): Requested modules not available: ** vtkRenderingOpenGL Call Stack (most recent call first): D:/VTK7.0/vtk_bin/VTKConfig.cmake:75 (vtk_module

unbound prefix-android 编写主题xml时报错

问题描述 android 编写主题xml时报错 <resources> <style name="AppBaseTheme" parent="android:Theme.Light"> </style> <style name="AppTheme" parent="AppBaseTheme"> <item android:name="android:windowN

用VS写C++时报错“找不到标识符”

  用VS写C++时报错"找不到标识符"          方法/步骤 在程序入口的cpp(有main函数)里这样写.函数A明显是定义过的.但仍然编译不通过 其实原因是这个CPP并没有面向对象的结构.所以进行编译时是"顺序编译"的,而main函数的定义又在A的定义之前.自然找不到标识符了 解决方案.把A函数的定义改到main函数的前面. 成功.

unity3d-Unity3D 实时解析XML时报错

问题描述 Unity3D 实时解析XML时报错 获取网络时间: IEnumerator GetTime() { WWW www = new WWW(timeURL); while (!www.isDone) { yield return www; Debug.Log("Doneeeeeeeeeeeeee" + www.text); ParseXml(www); } }` 后得到:` <?xml version="1.0" encoding="GB23

db2递归结果集作为查询条件时报错

问题描述 db2递归结果集作为查询条件时报错 递归在db2中没有问题,但要是把递归的结果作为查询条件时会报错,如:SELECT T.inst_id FROM BAPP_INST T WHERE exists (select 1 from (WITH area(parent_area_id area_id) AS (SELECT parent_area_id area_id FROM fox_pboc_area WHERE area_simple_name = '廊坊市' UNION ALL SE

jbpm5.4启动流程时报错

问题描述 jbpm5.4启动流程时报错 2C 在自己的项目中首先启动HorentQ服务器 没有问题: try { TaskService taskService = new TaskService(entityManagerFactory SystemEventListenerFactory.getSystemEventListener()); // 添加必要的用户 TaskServiceSession taskSession = taskService.createSession(); tas

reate ile-C#操作并口时报错??

问题描述 C#操作并口时报错?? public const short FILE_ATTRIBUTE_NORMAL = 0x80; public const short INVALID_HANDLE_VALUE = -1; public const uint GENERIC_READ = 0x80000000; public const uint GENERIC_WRITE = 0x40000000; public const uint CREATE_NEW = 1; public const

解决ThinkPHP关闭调试模式时报错的问题汇总

  解决ThinkPHP关闭调试模式时报错的问题汇总         本文给大家汇总了一下个人在项目中所遇到的关闭ThinkPHP的调试模式时遇到报错的几种情况以及最终的处理办法,非常的简单实用,这里分享给大家,有需要的小伙伴可以参考下. 案例一: 最近用ThinkPHP开发一个项目,本地开发测试完成上传到服务器后,第一次打开正常,再刷新页面时就出现 "页面调试错误,无法找开页面,请重试"的错误. 我就郁闷啦,明明本地设置define('APP_DEBUG', false) 运行没点问