首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关于Magick++,如何编写CMakeLists?

关于Magick++,如何编写CMakeLists?
EN

Stack Overflow用户
提问于 2016-06-11 04:10:49
回答 1查看 4.5K关注 0票数 8

所有人。

这是我的CMakeLists。

代码语言:javascript
复制
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})

我的代码是这样的。

代码语言:javascript
复制
#include <iostream>
#include <Magick++.h>
using namespace std;

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

它报告了一些像undefined reference to 'Magick::Color::Color(char const*)'这样的错误。解决方案似乎是我应该写一些类似于g++ 'Magick++-config --cxxflags --cppflags' -o example example.cxx 'Magick++-config --ldflags --libs'的东西。

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

非常感谢你能帮我!

EN

回答 1

Stack Overflow用户

发布于 2016-06-12 15:40:31

ImageMagick附带了一个Magick++-config实用程序。既然您已经直接设置了CMAKE_CXX_FLAGS,那么就可以询问Magick++-config关于cxx & lib标志的问题。

代码语言:javascript
复制
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已经非常擅长处理库和依赖关系。这也应该是可行的。

代码语言:javascript
复制
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})
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37759833

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档