cmake_minimum_required(VERSION 3.16) project(TessesFrameworkGFX) option(TESSESFRAMEWORKGFX_ENABLE_STATIC "Enable static build" ON) option(TESSESFRAMEWORKGFX_ENABLE_SHARED "Enable shared build" ON) option(TESSESFRAMEWORKGFX_ENABLE_EXAMPLES "Enable examples" OFF) option(TESSESFRAMEWORKGFX_FETCHCONTENT "Fetch content" ON) option(TESSESFRAMEWORKGFX_ENABLE_WEBCAM "Enable webcam" ON) set(TESSESFRAMEWORKGFX_SOURCES src/Color.cpp src/Image.cpp src/Webcam.cpp src/Font.cpp src/ImageCopy.cpp src/ImageFormats/BitmapFormat.cpp src/ImageFormats/PngFormat.cpp src/ImageFormats/JpegFormat.cpp src/ImageFormats/Formats.cpp src/ImageFormats/stb/stb_image_wrapper.cpp ) include(FetchContent) include(GNUInstallDirs) if(TESSESFRAMEWORKGFX_ENABLE_WEBCAM) FetchContent_Declare( webcam GIT_REPOSITORY https://github.com/rojarand/libwebcam ) if(TESSESFRAMEWORKGFX_ENABLE_STATIC) set(LIB_MODE "STATIC") else() set(LIB_MODE "SHARED") endif() FetchContent_MakeAvailable(webcam) set_property(TARGET webcam PROPERTY POSITION_INDEPENDENT_CODE ON) list(APPEND TessesFrameworkGFXLibs webcam) endif() if(TESSESFRAMEWORKGFX_ENABLE_STATIC) add_library(tessesframework_gfx STATIC ${TESSESFRAMEWORKGFX_SOURCES}) if(TESSESFRAMEWORKGFX_ENABLE_WEBCAM) target_link_libraries(tessesframework_gfx PUBLIC webcam) target_compile_definitions(tessesframework_gfx PUBLIC TESSESFRAMEWORKGFX_ENABLE_WEBCAM) endif() list(APPEND TessesFrameworkGFXLibs tessesframework_gfx) target_include_directories(tessesframework_gfx PUBLIC "$" "$" ) endif() if(TESSESFRAMEWORKGFX_ENABLE_SHARED) add_library(tessesframework_gfx_shared SHARED ${TESSESFRAMEWORKGFX_SOURCES}) if(TESSESFRAMEWORKGFX_ENABLE_WEBCAM) target_link_libraries(tessesframework_gfx_shared PUBLIC webcam) target_compile_definitions(tessesframework_gfx_shared PUBLIC TESSESFRAMEWORKGFX_ENABLE_WEBCAM) endif() list(APPEND TessesFrameworkGFXLibs tessesframework_gfx_shared) target_include_directories(tessesframework_gfx_shared PUBLIC "$" "$" ) endif() if(TESSESFRAMEWORKGFX_FETCHCONTENT) FetchContent_Declare( TessesFramework GIT_REPOSITORY https://onedev.site.tesses.net/tesses-framework.git ) FetchContent_MakeAvailable(TessesFramework) if(TESSESFRAMEWORKGFX_ENABLE_STATIC) target_link_libraries(tessesframework_gfx PUBLIC tessesframework) endif() if(TESSESFRAMEWORKGFX_ENABLE_SHARED) target_link_libraries(tessesframework_gfx_shared PUBLIC tessesframework_shared) endif() list(APPEND TessesFrameworkGFXLibs ${TessesFrameworkTargets}) else() find_package(TessesFramework REQUIRED) if(TESSESFRAMEWORKGFX_ENABLE_STATIC) target_link_libraries(tessesframework_gfx PUBLIC TessesFramework::tessesframework) if(TESSESFRAMEWORKGFX_ENABLE_PNG) target_compile_definitions(tessesframework_gfx PUBLIC TESSESFRAMEWORKGFX_ENABLE_PNG) endif() endif() if(TESSESFRAMEWORKGFX_ENABLE_SHARED) target_link_libraries(tessesframework_gfx_shared PUBLIC TessesFramework::tessesframework_shared) endif() endif() if(TESSESFRAMEWORKGFX_ENABLE_EXAMPLES) add_executable(createbmp examples/createbmp.cpp) target_link_libraries(createbmp PUBLIC tessesframework_gfx) add_executable(png2bmp examples/png2bmp.cpp) target_link_libraries(png2bmp PUBLIC tessesframework_gfx) add_executable(fillrect examples/fillrect.cpp) target_link_libraries(fillrect PUBLIC tessesframework_gfx) add_executable(drawfont examples/drawfont.cpp) target_link_libraries(drawfont PUBLIC tessesframework_gfx) add_executable(drawtext examples/drawtext.cpp) target_link_libraries(drawtext PUBLIC tessesframework_gfx) add_executable(resize examples/resize.cpp) target_link_libraries(resize PUBLIC tessesframework_gfx) if(TESSESFRAMEWORKGFX_ENABLE_WEBCAM) add_executable(getdevices examples/getdevices.cpp) target_link_libraries(getdevices PUBLIC tessesframework_gfx) add_executable(capture examples/capture.cpp) target_link_libraries(capture PUBLIC tessesframework_gfx) endif() endif() install(TARGETS ${TessesFrameworkGFXLibs} EXPORT TessesFrameworkGFXTargets LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} ) install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/include/TessesFrameworkGFX DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) install(EXPORT TessesFrameworkGFXTargets FILE TessesFrameworkGFXTargets.cmake NAMESPACE TessesFrameworkGFX:: DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/TessesFrameworkGFX ) include(CMakePackageConfigHelpers) configure_package_config_file(${CMAKE_CURRENT_SOURCE_DIR}/Config.cmake.in "${CMAKE_CURRENT_BINARY_DIR}/TessesFrameworkGFXConfig.cmake" INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/TessesFrameworkGFX) install(FILES "${CMAKE_CURRENT_BINARY_DIR}/TessesFrameworkGFXConfig.cmake" DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/TessesFrameworkGFX)