| cmake_minimum_required(VERSION 3.9 FATAL_ERROR) |
| |
| # create the project |
| project( |
| ezgl |
| VERSION 0.0.1 |
| LANGUAGES CXX |
| ) |
| |
| # we rely on GTK3 for the GUI, so make sure the system has it |
| find_package(PkgConfig REQUIRED) |
| pkg_check_modules(GTK3 QUIET gtk+-3.0) |
| pkg_check_modules(X11 QUIET x11) |
| |
| if(NOT GTK3_FOUND) |
| message(WARNING "EZGL: Failed to find required GTK3 library (on debian/ubuntu try 'sudo apt-get install libgtk-3-dev' to install)") |
| endif() |
| |
| # we also rely on glib to compile the GTK resource files |
| # a set of macros has been developed by Makman2 on GitHub to help with this |
| list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/gcr-cmake/macros) |
| |
| #Is ezgl the root cmake project? |
| set(IS_ROOT_PROJECT TRUE) |
| if (${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_CURRENT_SOURCE_DIR}) |
| set(IS_ROOT_PROJECT FALSE) |
| endif() |
| |
| # include the configuration/compile time options for this library |
| include(options.cmake) |
| |
| # create a library that can be linked by executables |
| add_library( |
| ${PROJECT_NAME} |
| include/ezgl/application.hpp |
| include/ezgl/camera.hpp |
| include/ezgl/canvas.hpp |
| include/ezgl/color.hpp |
| include/ezgl/control.hpp |
| include/ezgl/callback.hpp |
| include/ezgl/graphics.hpp |
| include/ezgl/point.hpp |
| include/ezgl/rectangle.hpp |
| src/application.cpp |
| src/camera.cpp |
| src/canvas.cpp |
| src/control.cpp |
| src/callback.cpp |
| src/graphics.cpp |
| ) |
| |
| target_include_directories( |
| ${PROJECT_NAME} |
| PUBLIC include |
| ) |
| |
| #Treat GTK/X11 headers as system headers so they |
| #do not generate compilation warnings |
| target_include_directories( |
| ${PROJECT_NAME} |
| SYSTEM |
| PUBLIC ${GTK3_INCLUDE_DIRS} |
| PUBLIC ${X11_INCLUDE_DIRS} |
| ) |
| |
| target_link_libraries( |
| ${PROJECT_NAME} |
| PUBLIC ${GTK3_LIBRARIES} |
| PUBLIC ${X11_LIBRARIES} |
| ) |
| |
| # add_compile_options does not seem to be working on the UG machines, |
| # and we cannot set target properties in version 3.0.2 |
| set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14") |
| |
| if(EZGL_BUILD_EXAMPLES) |
| add_subdirectory(examples) |
| endif() |
| |
| if(EZGL_BUILD_DOCS) |
| add_subdirectory(doc) |
| endif() |