Skip to content

Commit

Permalink
调整cmake
Browse files Browse the repository at this point in the history
  • Loading branch information
czyt1988 committed Nov 28, 2023
1 parent cd8a53a commit 0178425
Show file tree
Hide file tree
Showing 4 changed files with 77 additions and 52 deletions.
22 changes: 16 additions & 6 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,12 @@ option(BUILD_EXAMPLES "build the examples" ON)
# cn:Qt库加载,最低版本要求为5.8
set(SARIBBON_MIN_QT_VERSION 5.8)
find_package(QT NAMES Qt6 Qt5 COMPONENTS Core REQUIRED)
find_package(Qt${QT_VERSION_MAJOR} ${SARIBBON_MIN_QT_VERSION} COMPONENTS Core Gui Widgets REQUIRED)
find_package(Qt${QT_VERSION_MAJOR} ${DA_MIN_QT_VERSION} COMPONENTS
Core
Gui
Widgets
REQUIRED
)
message(STATUS "current Qt version is Qt${QT_VERSION_MAJOR}.${QT_VERSION_MINOR}.${QT_VERSION_PATCH}")


Expand Down Expand Up @@ -98,7 +103,10 @@ else()
set(SARIBBON_PLATFORM "64")
endif()


# windows系统下,直接安装到当前文件夹下
if(WIN32)
set(CMAKE_INSTALL_PREFIX "${CMAKE_CURRENT_SOURCE_DIR}/bin_qt${QT_VERSION}/SARibbon")
endif()

include(cmake/WinResource.cmake)

Expand All @@ -121,24 +129,26 @@ set(SARIBBON_DOC_FILES
${CMAKE_CURRENT_SOURCE_DIR}/readme-cn.md
${CMAKE_CURRENT_SOURCE_DIR}/LICENSE
)
# 复制doc目录到install目录
install(DIRECTORY
${CMAKE_CURRENT_SOURCE_DIR}/doc
DESTINATION ${CMAKE_INSTALL_PREFIX}
DESTINATION .
COMPONENT document
)
# 把文档复制过去
install(FILES
${SARIBBON_DOC_FILES}
DESTINATION ${CMAKE_INSTALL_PREFIX}
DESTINATION .
COMPONENT document
)

# pri文件
# 把针对cmake安装的两个pri文件复制到根目录下
set(SARIBBON_QMAKE_FILES
${CMAKE_CURRENT_SOURCE_DIR}/cmake/common.pri
${CMAKE_CURRENT_SOURCE_DIR}/cmake/SARibbonBar.pri
)
install(FILES
${SARIBBON_QMAKE_FILES}
DESTINATION ${CMAKE_INSTALL_PREFIX}
DESTINATION .
COMPONENT qmake
)
4 changes: 2 additions & 2 deletions cmake/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@ configure_file (project-config-version.cmake.in

install (FILES
"${PROJECT_BINARY_DIR}/${PROJECT_NAME_LOWER}-config.cmake"
DESTINATION "cmake")
DESTINATION "lib/cmake")

install (FILES
"${PROJECT_BINARY_DIR}/${PROJECT_NAME_LOWER}-config-version.cmake"
DESTINATION "cmake")
DESTINATION "lib/cmake")
88 changes: 44 additions & 44 deletions src/SARibbonBar/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -302,7 +302,7 @@ else()
${SACOLOR_SOURCE_FILES}
)
endif()

add_library(SARibbon ALIAS ${SARIBBONBAR_LIB_NAME})
#################################################
# Qt相关的依赖
#################################################
Expand Down Expand Up @@ -385,7 +385,7 @@ endif()

if(SARIBBON_USE_FRAMELESS_LIB)
target_include_directories(${SARIBBONBAR_LIB_NAME} PUBLIC
$<INSTALL_INTERFACE:include>
$<INSTALL_INTERFACE:"include">
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
$<BUILD_INTERFACE:${FRAMELESS_HEADER_BASE}>
$<BUILD_INTERFACE:${FRAMELESS_HEADER_DIR}>
Expand All @@ -397,30 +397,27 @@ if(SARIBBON_USE_FRAMELESS_LIB)
)
else()
target_include_directories(${SARIBBONBAR_LIB_NAME} PUBLIC
$<INSTALL_INTERFACE:include>
$<INSTALL_INTERFACE:"include">
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
)
endif()

# ------------------------------- install script -------------------------------

set(SARIBBON_INSTALL_DIR SARibbon)
set(CMAKE_INSTALL_PREFIX ${SARIBBON_BIN_DIR})
message(STATUS "install dir ${SARIBBON_BIN_DIR}")
# Generate library version info which will generate xxxConfigVersion.cmake,
# the ${PACKAGE_VERSION} is the version defined in project()
include(CMakePackageConfigHelpers)
write_basic_package_version_file(
"${SARIBBONBAR_LIB_NAME}ConfigVersion.cmake"
VERSION ${VERSION_SHORT}
COMPATIBILITY SameMajorVersion
)

# 头文件
install(FILES
${SARIBBON_HEADER_FILES}
DESTINATION include/${SARIBBON_INSTALL_DIR}
DESTINATION include
COMPONENT headers
)
# SAColorWidget的头文件
install(FILES
${SACOLOR_HEADER_FILES}
DESTINATION include/${SARIBBON_INSTALL_DIR}/colorWidgets
DESTINATION include/colorWidgets
COMPONENT headers
)

Expand All @@ -432,66 +429,69 @@ set(SARIBBON_AMALGAMATE_FILES ${CMAKE_CURRENT_SOURCE_DIR}/../SARibbon.h
install(FILES
${SARIBBON_AMALGAMATE_FILES}
DESTINATION amalgamate
COMPONENT amalgamate
)
install(FILES
${SARIBBON_RESOURCE_FILES}
# 复制resource目录到install/amalgamate目录
install(DIRECTORY
${CMAKE_CURRENT_SOURCE_DIR}/resource
DESTINATION amalgamate/SARibbonBar
COMPONENT amalgamate
)
set(SARIBBON_RESOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/resource)
set(SARIBBON_RESOURCE_RAW_FILES
${SARIBBON_RESOURCE_DIR}/theme-win7.qss
${SARIBBON_RESOURCE_DIR}/theme-office2013.qss
${SARIBBON_RESOURCE_DIR}/theme-dark.qss
${SARIBBON_RESOURCE_DIR}/ArrowDown.png
${SARIBBON_RESOURCE_DIR}/ArrowMore.png
${SARIBBON_RESOURCE_DIR}/ArrowUp.png
${SARIBBON_RESOURCE_DIR}/ribbonPannelOptionButton.png
${SARIBBON_RESOURCE_DIR}/define-color.svg
${SARIBBON_RESOURCE_DIR}/Titlebar_Close.png
${SARIBBON_RESOURCE_DIR}/Titlebar_Close_Hover.png
${SARIBBON_RESOURCE_DIR}/Titlebar_Max.png
${SARIBBON_RESOURCE_DIR}/Titlebar_Min.png
${SARIBBON_RESOURCE_DIR}/Titlebar_Normal.png
${SARIBBON_RESOURCE_DIR}/Titlebar_Shade.png
${SARIBBON_RESOURCE_DIR}/Titlebar_Unshade.png
)
# resource.qrc
install(FILES
${SARIBBON_RESOURCE_RAW_FILES}
DESTINATION amalgamate/SARibbonBar/resource
COMPONENT amalgamate
${SARIBBON_RESOURCE_FILES}
DESTINATION amalgamate/SARibbonBar
)

# 如果开启了frameless,要把frameless的文件也拷贝过去
if(SARIBBON_USE_FRAMELESS_LIB)
#复制目录src/SARibbonBar/3rdparty/framelesshelper/include/
install(DIRECTORY
${FRAMELESS_HEADER_DIR}
DESTINATION include/${SARIBBON_INSTALL_DIR}/3rdparty/framelesshelper/include
DESTINATION include/3rdparty/framelesshelper/include
COMPONENT headers
)
#复制目录src/SARibbonBar/3rdparty/framelesshelper/qmake/
SET(FRAMELESS_QMAKE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/framelesshelper/qmake)
install(DIRECTORY
${FRAMELESS_QMAKE_DIR}
DESTINATION include/${SARIBBON_INSTALL_DIR}/3rdparty/framelesshelper/
DESTINATION include/3rdparty/framelesshelper/
COMPONENT headers
)
endif()

include(CMakePackageConfigHelpers)
set(SARIBBONBAR_LIB_INCLUDE_INSTALL_DIR "../../include")
write_basic_package_version_file(
${CMAKE_CURRENT_BINARY_DIR}/SARibbonConfigVersion.cmake
VERSION ${SARIBBON_VERSION}
COMPATIBILITY SameMajorVersion
)
configure_package_config_file(
"${CMAKE_CURRENT_SOURCE_DIR}/SARibbonBarConfig.cmake.in"
"${CMAKE_CURRENT_BINARY_DIR}/SARibbonConfig.cmake"
INSTALL_DESTINATION "lib/cmake"
PATH_VARS SARIBBONBAR_LIB_INCLUDE_INSTALL_DIR
)
message("CMAKE_CURRENT_BINARY_DIR=${CMAKE_CURRENT_BINARY_DIR}")
install(TARGETS ${SARIBBONBAR_LIB_NAME}
EXPORT SARibbonTargets
EXPORT SARibbonBarTargets
RUNTIME DESTINATION bin
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib
INCLUDES DESTINATION include/${SARIBBON_INSTALL_DIR}
INCLUDES DESTINATION include
)
install(EXPORT SARibbonTargets
install(EXPORT SARibbonBarTargets
FILE SARibbonTargets.cmake
DESTINATION lib/cmake/${SARIBBON_INSTALL_DIR}
DESTINATION lib/cmake
)

install(FILES
"${CMAKE_CURRENT_BINARY_DIR}/SARibbonConfig.cmake"
"${CMAKE_CURRENT_BINARY_DIR}/SARibbonConfigVersion.cmake"
DESTINATION lib/cmake
)

# 资源文件生成

if(WIN32)
create_win32_resource_version(
TARGET ${SARIBBONBAR_LIB_NAME}
Expand Down
15 changes: 15 additions & 0 deletions src/SARibbonBar/SARibbonBarConfig.cmake.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# This module defines
# @PROJECT_NAME@_FOUND, if false, do not try to link to @PROJECT_NAME@
# @PROJECT_NAME@_INCLUDE_DIR, where to find the headers
# @PROJECT_NAME@_LIBRARIES, where to find the libs
@PACKAGE_INIT@

set (PackageName @SARIBBONBAR_LIB_NAME@)
set (@SARIBBONBAR_LIB_NAME@_VERSION @SARIBBON_VERSION@)

include ( ${CMAKE_CURRENT_LIST_DIR}/SARibbonTargets.cmake )
set_and_check ( ${PackageName}_INCLUDE_DIR @SARIBBONBAR_LIB_INCLUDE_INSTALL_DIR@ )
set ( ${PackageName}_LIBRARIES)
list ( APPEND ${PackageName}_LIBRARIES ${PackageName})

check_required_components(${PackageName})

0 comments on commit 0178425

Please sign in to comment.