forked from openkylin/ukui-panel
95 lines
3.7 KiB
CMake
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)
|