# -*- mode: cmake -*- cmake_minimum_required(VERSION 3.25.0) if(DEFINED ENV{VCPKG_DEFAULT_TRIPLET} AND NOT VCPKG_TARGET_TRIPLET MATCHES "$ENV{VCPKG_DEFAULT_TRIPLET}") set(VCPKG_TARGET_TRIPLET "$ENV{VCPKG_DEFAULT_TRIPLET}" CACHE STRING "" FORCE) endif() include("${CMAKE_SOURCE_DIR}/cmake/include/version.cmake") project(MandelZoom VERSION ${PRODUCT_VERSION} DESCRIPTION "Mandelbrot fractal viewer" LANGUAGES CXX) include("${CMAKE_SOURCE_DIR}/cmake/include/flags.cmake") find_package(FreeGLUT CONFIG QUIET) find_package(OpenGL REQUIRED) find_package(PNG REQUIRED) if(FreeGLUT_FOUND) if(TARGET FreeGLUT::freeglut_static) set(GLUT_TARGET FreeGLUT::freeglut_static) elseif(TARGET FreeGLUT::freeglut) set(GLUT_TARGET FreeGLUT::freeglut) elseif(TARGET freeglut::freeglut) set(GLUT_TARGET freeglut::freeglut) else() message(FATAL_ERROR "FreeGLUT found but no imported target was exported") endif() else() find_package(GLUT REQUIRED) if(TARGET GLUT::GLUT) set(GLUT_TARGET GLUT::GLUT) else() set(GLUT_TARGET ${GLUT_LIBRARIES}) target_include_directories(${PROJECT_NAME} SYSTEM BEFORE PUBLIC ${GLUT_INCLUDE_DIR}) endif() endif() message(STATUS "GLUT_TARGET: ${GLUT_TARGET}") file(GLOB SOURCE_FILES "${CMAKE_CURRENT_SOURCE_DIR}/*.cpp") file(GLOB HEADER_FILES "${CMAKE_CURRENT_SOURCE_DIR}/*.h") add_executable(MandelZoom ${SOURCE_FILES} ${HEADER_FILES}) set_property(TARGET ${PROJECT_NAME} PROPERTY POSITION_INDEPENDENT_CODE ON) target_link_libraries(${PROJECT_NAME} PRIVATE ${GLUT_TARGET} OpenGL::GL OpenGL::GLU PNG::PNG) if(FreeGLUT_FOUND) target_compile_definitions(${PROJECT_NAME} PRIVATE USING_FREEGLUT=1) if(TARGET FreeGLUT::freeglut_static) target_compile_definitions(${PROJECT_NAME} PRIVATE FREEGLUT_STATIC) endif() else() target_compile_definitions(${PROJECT_NAME} PRIVATE USING_GLUT=1) endif() install(TARGETS ${PROJECT_NAME} DESTINATION ${CMAKE_INSTALL_BINDIR}) get_filename_component(GPP_DIR ${CMAKE_CXX_COMPILER} DIRECTORY) install(CODE " set(GPP_DIR [[${GPP_DIR}]]) set(TARGET_FILE [[$]]) include([[${CMAKE_SOURCE_DIR}/cmake/include/install_dependencies.cmake]]) ")