Reputation: 313
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
Upvotes: 3
Views: 7018
Reputation: 4609
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.
Upvotes: 4