Cairo library and Cmake

て烟熏妆下的殇ゞ 提交于 2019-12-23 17:38:37

问题


I'm new to c++ and cmake. I installed cairo library as written here via port. Now i want to include cairo to my project. I wrote the CmakeLists.txt commands as shown here.

cmake_minimum_required(VERSION 3.6)
project(HelloOpenGL)

set(CMAKE_CXX_STANDARD 11)

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

#find_package(ImageMagick COMPONENTS Magick++)
#include_directories(${ImageMagick_INCLUDE_DIRS})
#target_link_libraries(HelloOpenGL ${ImageMagick_LIBRARIES})

find_package(Cairo)
include_directories(${Cairo_INCLUDE_DIRS})
target_link_libraries(HelloOpenGL ${Cairo_LIBRARIES})

if(CAIRO_FOUND)
    message("Cairo found")
    else()
    message("Cairo not found")
    endif()

But it's not working, I get this output -

CMake Warning at CMakeLists.txt:16 (find_package):
  By not providing "FindCairo.cmake" in CMAKE_MODULE_PATH this project has
  asked CMake to find a package configuration file provided by "Cairo", but
  CMake did not find one.

  Could not find a package configuration file provided by "Cairo" with any of
  the following names:

    CairoConfig.cmake
    cairo-config.cmake

  Add the installation prefix of "Cairo" to CMAKE_PREFIX_PATH or set
  "Cairo_DIR" to a directory containing one of the above files.  If "Cairo"
  provides a separate development package or SDK, be sure it has been
  installed.

Help me to properly include cairo, please


回答1:


The problem is that your version of CMake doesn't have (by the way, not even the latest development version of CMake has it ... https://gitlab.kitware.com/cmake/cmake/tree/master/Modules) the file FindCairo.cmake that you need to have to run the command find_package(Cairo) and you haven't included this file in your package.
A solution is to grab a FindCairo.cmake file from the web, create a cmake directory inside the root directory of your project and have in CMakeLists.txt the extra line

set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/cmake")

so your snippet from CMakeLists.txt would look like:

cmake_minimum_required(VERSION 3.6)
project(HelloOpenGL)
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
set(CMAKE_CXX_STANDARD 11)

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

#find_package(ImageMagick COMPONENTS Magick++)
#include_directories(${ImageMagick_INCLUDE_DIRS})
#target_link_libraries(HelloOpenGL ${ImageMagick_LIBRARIES})

find_package(Cairo)
include_directories(${Cairo_INCLUDE_DIRS})
target_link_libraries(HelloOpenGL ${Cairo_LIBRARIES})

If you will not use an already existing FindCairo.cmake (e.g. Cairo that you installed might contain one such file) you will have to write one or find an alternative way to include the package.



来源:https://stackoverflow.com/questions/41636886/cairo-library-and-cmake

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!