关于Magick ++,如何编写CMakeLists? [英] About Magick++, how to write the CMakeLists?

查看:195
本文介绍了关于Magick ++,如何编写CMakeLists?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

每个人。

我的CMakeLists。

There is my CMakeLists.

cmake_minimum_required(VERSION 3.5)
project(Blah)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")

set(SOURCE_FILES main.cpp)
add_executable(Blah ${SOURCE_FILES})

find_package(ImageMagick)
find_package(ImageMagick COMPONENTS Magick++)
find_package(ImageMagick COMPONENTS convert)
find_package(ImageMagick COMPONENTS Magick++ convert)

include_directories(${ImageMagick_INCLUDE_DIRS})
target_link_libraries(Blah ${ImageMagick_LIBRARIES})

我的代码如下所示。

#include <iostream>
#include <Magick++.h>
using namespace std;

int main(int argc, char **argv) {
    Magick::Image image("640*480", "white");
}

它会报告一些错误,例如未定义的引用'Magick :: Color :: Color(char const *)'。解决方案似乎我应该写一些像 g ++'Magick ++ - config --cxxflags --cppflags' -o example example.cxx'Magick ++ - config --ldflags --libs'

It reports some errors like undefined reference to 'Magick::Color::Color(char const*)'. And the solution seems that I should write something like g++ 'Magick++-config --cxxflags --cppflags' -o example example.cxx 'Magick++-config --ldflags --libs'.

可悲的是,我只是不知道如何为它编写正确的CMakeLists项目,或者对于整个Magick ++。 (我学到了一些关于CMake的基础知识。但遗憾的是没用。)

Sadly, I just don't know how to write a correct CMakeLists' items for it, or, for the whole Magick++. (I learned some basics about CMake. Yet useless, sadly.)

非常感谢你能帮助我!

推荐答案

ImageMagick附带一个 Magick ++ - config 实用程序。由于您已经直接设置 CMAKE_CXX_FLAGS ,您可能还要问 Magick ++ - config 关于 cxx & lib flags。

ImageMagick ships with a Magick++-config utility. Since you're already setting CMAKE_CXX_FLAGS directly, you might as well ask Magick++-config about cxx & lib flags.

cmake_minimum_required(VERSION 3.5)
project(Blah)

# Find where Magick++-config lives
find_program(MAGICK_CONFIG "Magick++-config")
# Ask about CXX and lib flags/locations
execute_process(COMMAND "${MAGICK_CONFIG}" "--cxxflags" OUTPUT_VARIABLE MAGICK_CXX_FLAGS)
execute_process(COMMAND "${MAGICK_CONFIG}" "--libs" OUTPUT_VARIABLE MAGICK_LD_FLAGS)
# Remove trailing whitespace (CMAKE warns about this)
string(STRIP "${MAGICK_CXX_FLAGS}" MAGICK_CXX_FLAGS)
string(STRIP "${MAGICK_LD_FLAGS}" MAGICK_LD_FLAGS)
# Append all flags to CMAKE_CXX_FLAGS
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 ${MAGICK_CXX_FLAGS} ${MAGICK_LD_FLAGS}")

set(SOURCE_FILES main.cpp)

add_executable(Blah ${SOURCE_FILES})

但是! CMake已经非常好了关于处理图书馆和依赖关系。这也应该有效。

But! CMake is already very good about handling libraries & dependancies. This should also work.

cmake_minimum_required(VERSION 3.5)
project(Blah)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")

set(SOURCE_FILES main.cpp)

add_executable(Blah ${SOURCE_FILES})
add_definitions( -DMAGICKCORE_QUANTUM_DEPTH=16 )
add_definitions( -DMAGICKCORE_HDRI_ENABLE=0 )
find_package(ImageMagick COMPONENTS Magick++)
include_directories(${ImageMagick_INCLUDE_DIRS})
target_link_libraries(Blah ${ImageMagick_LIBRARIES})

这篇关于关于Magick ++,如何编写CMakeLists?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆