Files
tessesframework-webapp/CMakeLists.txt
2025-10-19 02:40:55 -05:00

99 lines
3.2 KiB
CMake

cmake_minimum_required(VERSION 3.16)
project(TF_WebApp)
option(TFWEBAPP_ENABLE_STATIC "Enable static build" ON)
option(TFWEBAPP_ENABLE_SHARED "Enable shared build" ON)
option(TFWEBAPP_ENABLE_EXAMPLES "Enable examples" OFF)
option(TFWEBAPP_FETCHCONTENT "Fetch content" ON)
set(TFWEBAPP_SOURCES
src/lib.cpp
)
include(FetchContent)
FetchContent_Declare(
WebView
GIT_REPOSITORY https://github.com/webview/webview.git
)
set(WEBVIEW_INSTALL_TARGETS ON)
FetchContent_MakeAvailable(WebView)
list(APPEND TessesFrameworkWebAppLibs webview_core_headers)
if(TFWEBAPP_ENABLE_STATIC)
add_library(tessesframework_webapp STATIC ${TFWEBAPP_SOURCES})
target_link_libraries(tessesframework_webapp PRIVATE webview::core)
list(APPEND TessesFrameworkWebAppLibs tessesframework_webapp)
target_include_directories(tessesframework_webapp
PUBLIC
"$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>"
"$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>"
)
endif()
if(TFWEBAPP_ENABLE_SHARED)
add_library(tessesframework_webapp_shared SHARED ${TFWEBAPP_SOURCES})
target_link_libraries(tessesframework_webapp_shared PRIVATE webview::core)
list(APPEND TessesFrameworkWebAppLibs tessesframework_webapp_shared)
target_include_directories(tessesframework_webapp_shared
PUBLIC
"$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>"
"$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>"
)
endif()
if(TFWEBAPP_FETCHCONTENT)
FetchContent_Declare(
TessesFramework
GIT_REPOSITORY https://onedev.site.tesses.net/tesses-framework.git
)
FetchContent_MakeAvailable(TessesFramework)
if(TFWEBAPP_ENABLE_STATIC)
target_link_libraries(tessesframework_webapp PUBLIC tessesframework)
endif()
if(TFWEBAPP_ENABLE_SHARED)
target_link_libraries(tessesframework_webapp_shared PUBLIC tessesframework_shared)
endif()
list(APPEND TessesFrameworkWebAppLibs ${TessesFrameworkTargets})
else()
find_package(TessesFramework REQUIRED)
if(TFWEBAPP_ENABLE_STATIC)
target_link_libraries(tessesframework_webapp PUBLIC TessesFramework::tessesframework)
endif()
if(TFWEBAPP_ENABLE_SHARED)
target_link_libraries(tessesframework_webapp_shared PUBLIC TessesFramework::tessesframework_shared)
endif()
endif()
if(TFWEBAPP_ENABLE_EXAMPLES)
add_executable(printargs examples/printargs.cpp)
target_link_libraries(printargs PUBLIC tessesframework_webapp)
endif()
install(TARGETS ${TessesFrameworkWebAppLibs}
EXPORT TessesFrameworkWebAppTargets
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
)
install(FILES include/TF_WebApp.hpp DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
install(EXPORT TessesFrameworkWebAppTargets
FILE TessesFrameworkWebAppTargets.cmake
NAMESPACE TessesFrameworkWebApp::
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/TessesFrameworkWebApp
)
configure_package_config_file(${CMAKE_CURRENT_SOURCE_DIR}/Config.cmake.in "${CMAKE_CURRENT_BINARY_DIR}/TessesFrameworkWebAppConfig.cmake"
INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/TessesFrameworkWebApp)
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/TessesFrameworkWebAppConfig.cmake"
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/TessesFrameworkWebApp)