我想在使用 MagickWand 的软件中使用 CMake。
CMake 在我的机器上工作并生成有用的 Makefile。在另一台机器上,我必须手动添加
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -lMagickWand-6.Q16 -lMagickCore-6.Q16")
否则链接器找不到 MagickWandGenesis() 等函数。
我发现 -l 标志通过pkg-config --cflags --libs MagickWand
.
CMake 不应该已经为我生成链接器标志了TARGET_LINK_LIBRARIES
吗?
我是否遗漏了一些明显的东西,或者为什么这不是在所有地方都有效?
我在 CMakeLists.txt 中有这段代码:
FIND_PACKAGE(ImageMagick
REQUIRED
COMPONENTS MagickWand
)
[...]
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DMAGICKCORE_HDRI_ENABLE=0 -DMAGICKCORE_QUANTUM_DEPTH=16")
[...]
INCLUDE_DIRECTORIES(
${Boost_INCLUDE_DIR}
${ImageMagick_INCLUDE_DIRS}
${ImageMagick_MagickWand_INCLUDE_DIRS}
)
[...]
TARGET_LINK_LIBRARIES(application_name
[...]
${Boost_LIBRARIES}
${CURL_LIBRARIES}
${ImageMagick_LIBRARIES}
${ImageMagick_MagickWand_LIBRARY}
)
最后一个${ImageMagick_MagickWand_LIBRARY}
甚至不应该是必要的。
在两台机器上使用 Magick 6.8.9.9、CMake 3.0.2 (Debian Jessie)。