cmake_minimum_required(VERSION 3.10) project(OpenGLUtility) set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib") set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) set(CMAKE_CXX_STANDARD 17) set(BUILD_EXAMPLES ON CACHE BOOL "Build examples") set(BUILD_DOCUMENTATION ON CACHE BOOL "Generate documentation") if(WIN32) set(EXPOSE_OPENGL OFF CACHE BOOL "If you want to use raw OpenGL functions in your app (e.g. to use ImGui) check this") endif() if(${BUILD_DOCUMENTATION}) find_package(Doxygen REQUIRED) endif() if(WIN32) add_compile_definitions(OGLU_WIN32) if(${EXPOSE_OPENGL}) add_compile_definitions(GLAD_GLAPI_EXPORT) endif() endif() file(GLOB_RECURSE include_files "include/*.hpp" ) file(GLOB_RECURSE source_files "src/*.cpp" "vendor/src/*.c" ) add_library(openglu SHARED ${include_files} ${source_files} "cpp.hint" "src/core.cpp") target_compile_definitions(openglu PRIVATE OGLU_BUILD_DLL) include_directories( include vendor/include ) target_include_directories(openglu PUBLIC include vendor/include ) if(${BUILD_DOCUMENTATION}) configure_file(doxyfile.in ${CMAKE_BINARY_DIR}/doxyfile @ONLY) add_custom_target(openglu_doc ALL COMMAND ${DOXYGEN_EXECUTABLE} "${CMAKE_BINARY_DIR}/doxyfile" WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} COMMENT "Building documentation..." ) endif() if(${BUILD_EXAMPLES}) macro(subdirlist result curdir) file(GLOB children RELATIVE ${curdir} ${curdir}/*) set(dirlist "") foreach(child ${children}) if(IS_DIRECTORY ${curdir}/${child}) list(APPEND dirlist ${child}) endif() endforeach() set(${result} ${dirlist}) endmacro() subdirlist(samples ${CMAKE_SOURCE_DIR}/examples) foreach(sample ${samples}) add_subdirectory(examples/${sample}) endforeach() endif() install( TARGETS openglu LIBRARY DESTINATION lib )