ukui-panel/framework/CMakeLists.txt

95 lines
3.7 KiB
CMake

cmake_minimum_required(VERSION 3.16)
project(ukui-panel-framework)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(VERSION_MAJOR 1)
set(VERSION_MINOR 0)
set(VERSION_MICRO 0)
set(UKUI_PANEL_FRAMEWORK_VERSION ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_MICRO})
find_package(QT NAMES Qt6 Qt5 COMPONENTS Core Quick REQUIRED)
find_package(Qt${QT_VERSION_MAJOR} COMPONENTS Core Quick REQUIRED)
find_package(ukui-quick REQUIRED)
set(PROJECT_SOURCES
widget/widget.cpp widget/widget.h
widget/widget-loader.cpp widget/widget-loader.h
widget/widget-metadata.cpp widget/widget-metadata.h
widget/widget-content.cpp widget/widget-content.h
widget/widget-container.cpp widget/widget-container.h
widget/widget-property.h
widget-ui/widget-item.cpp widget-ui/widget-item.h
widget-ui/widget-item-engine.cpp widget-ui/widget-item-engine.h
widget-ui/widget-item-context.cpp widget-ui/widget-item-context.h
widget-ui/widget-item-attached.cpp widget-ui/widget-item-attached.h
widget-ui/widget-container-item.cpp widget-ui/widget-container-item.h
widget-ui/shared-engine-component.cpp widget-ui/shared-engine-component.h
config/config.h config/config.cpp
config/ini-config.h config/ini-config.cpp
config/json-config.h config/json-config.cpp
config/widget-config.cpp config/widget-config.h
config/config-loader.cpp config/config-loader.h
)
set(HEADERS widget/widget.h widget/widget-interface.h)
add_library(${PROJECT_NAME} SHARED ${PROJECT_SOURCES})
target_link_libraries(${PROJECT_NAME}
PRIVATE
Qt${QT_VERSION_MAJOR}::Core
Qt${QT_VERSION_MAJOR}::Quick
ukui-quick
)
include(CMakePackageConfigHelpers)
set(CMAKE_CONFIG_INSTALL_DIR "/usr/share/cmake/ukui-panel-framework")
set(HEADERS_INSTALL_DIR /usr/include/ukui-panel-framework)
set(PC_INSTALL_DIR "/usr/lib/pkgconfig")
target_include_directories(${PROJECT_NAME} PUBLIC $<INSTALL_INTERFACE:${HEADERS_INSTALL_DIR}>
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/widget>
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/view>
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/config>)
configure_package_config_file(
"${CMAKE_CURRENT_SOURCE_DIR}/ukui-panel-framework-config.cmake.in"
"${CMAKE_CURRENT_BINARY_DIR}/ukui-panel-framework-config.cmake"
INSTALL_DESTINATION ${CMAKE_CONFIG_INSTALL_DIR}
)
write_basic_package_version_file(
${CMAKE_CURRENT_BINARY_DIR}/ukui-panel-framework-config-version.cmake
VERSION ${UKUI_PANEL_FRAMEWORK_VERSION}
COMPATIBILITY SameMajorVersion
)
configure_package_config_file(
"${CMAKE_CURRENT_SOURCE_DIR}/ukui-panel-framework.pc.in"
"${CMAKE_CURRENT_BINARY_DIR}/ukui-panel-framework.pc"
INSTALL_DESTINATION ${PC_INSTALL_DIR}
)
set_target_properties(${PROJECT_NAME} PROPERTIES
VERSION ${UKUI_PANEL_FRAMEWORK_VERSION}
SOVERSION ${VERSION_MAJOR}
OUTPUT_NAME ${PROJECT_NAME}
)
install(TARGETS ${PROJECT_NAME}
EXPORT ${PROJECT_NAME}
PUBLIC_HEADER DESTINATION ${HEADERS_INSTALL_DIR}
LIBRARY DESTINATION /usr/lib/${CMAKE_LIBRARY_ARCHITECTURE}
)
install(EXPORT ${PROJECT_NAME}
FILE ukui-panel-framework-targets.cmake
DESTINATION ${CMAKE_CONFIG_INSTALL_DIR})
install(FILES ${HEADERS} DESTINATION ${HEADERS_INSTALL_DIR})
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/ukui-panel-framework.pc DESTINATION ${PC_INSTALL_DIR})
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/ukui-panel-framework-config.cmake
${CMAKE_CURRENT_BINARY_DIR}/ukui-panel-framework-config-version.cmake
DESTINATION ${CMAKE_CONFIG_INSTALL_DIR})
add_subdirectory(test)