mirror of
https://onedev.site.tesses.net/tesses-framework/tessesframework-gfx
synced 2026-02-08 08:25:46 +00:00
160 lines
5.0 KiB
CMake
160 lines
5.0 KiB
CMake
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
|
|
"$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>"
|
|
"$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>"
|
|
)
|
|
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
|
|
"$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>"
|
|
"$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>"
|
|
)
|
|
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) |