Skip to content
This repository has been archived by the owner on Dec 19, 2023. It is now read-only.

Commit

Permalink
cmake: use unique target name and fix install failure
Browse files Browse the repository at this point in the history
  • Loading branch information
wangwenx190 committed Jul 29, 2023
1 parent 8cc6a15 commit 5b0d063
Show file tree
Hide file tree
Showing 5 changed files with 72 additions and 74 deletions.
3 changes: 2 additions & 1 deletion FramelessHelperConfig.cmake.in
Original file line number Diff line number Diff line change
Expand Up @@ -33,12 +33,13 @@ foreach(_comp ${@PROJECT_NAME@_FIND_COMPONENTS})
include("${__targets_file}")
else()
set(@PROJECT_NAME@_FOUND FALSE)
set(@PROJECT_NAME@_NOT_FOUND_MESSAGE "Can't find necessary configuration file for @PROJECT_NAME@::${_comp}, please make sure this component is successfully built and installed.")
set(@PROJECT_NAME@_NOT_FOUND_MESSAGE "Can't find necessary configuration file for @PROJECT_NAME@::${_comp}, please make sure this component is built successfully and installed properly.")
break()
endif()
else()
set(@PROJECT_NAME@_FOUND FALSE)
set(@PROJECT_NAME@_NOT_FOUND_MESSAGE "Unknown component: @PROJECT_NAME@::${_comp}.")
break()
endif()
endforeach()

Expand Down
2 changes: 1 addition & 1 deletion cmake
Submodule cmake updated 1 files
+10 −7 utils.cmake
55 changes: 27 additions & 28 deletions src/core/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@ endif()

set(SUB_MODULE Core)
set(SUB_MODULE_FULL_NAME ${PROJECT_NAME}${SUB_MODULE})
set(SUB_MODULE_TARGET ${SUB_MODULE_FULL_NAME})
set(SUB_MODULE_PATH ${PROJECT_NAME}/${SUB_MODULE})

set(INCLUDE_PREFIX ../../include/${SUB_MODULE_PATH})
Expand Down Expand Up @@ -150,7 +151,7 @@ if(WIN32 AND NOT FRAMELESSHELPER_BUILD_STATIC)
COMPANY "wangwenx190"
DESCRIPTION "${PROJECT_NAME} ${SUB_MODULE} Module"
COPYRIGHT "MIT License"
ORIGINAL_FILENAME "${PROJECT_NAME}${SUB_MODULE}.dll"
ORIGINAL_FILENAME "${SUB_MODULE_FULL_NAME}.dll"
PRODUCT "${PROJECT_NAME}"
COMMENTS "Built from commit ${PROJECT_VERSION_COMMIT} on ${PROJECT_COMPILE_DATETIME} (UTC)."
LIBRARY
Expand All @@ -166,22 +167,20 @@ if(FRAMELESSHELPER_BUILD_STATIC)
else()
set(SUB_MOD_LIB_TYPE "SHARED")
endif()
add_library(${SUB_MODULE} ${SUB_MOD_LIB_TYPE} ${ALL_SOURCES})
add_library(${SUB_MODULE_FULL_NAME} ALIAS ${SUB_MODULE})
add_library(${PROJECT_NAME}::${SUB_MODULE} ALIAS ${SUB_MODULE})
add_library(${PROJECT_NAME}::${SUB_MODULE_FULL_NAME} ALIAS ${SUB_MODULE})
add_library(${SUB_MODULE_TARGET} ${SUB_MOD_LIB_TYPE} ${ALL_SOURCES})
add_library(${PROJECT_NAME}::${SUB_MODULE} ALIAS ${SUB_MODULE_TARGET})
add_library(${PROJECT_NAME}::${SUB_MODULE_FULL_NAME} ALIAS ${SUB_MODULE_TARGET})

set_target_properties(${SUB_MODULE} PROPERTIES
set_target_properties(${SUB_MODULE_TARGET} PROPERTIES
VERSION "${PROJECT_VERSION}"
SOVERSION "${PROJECT_VERSION_MAJOR}"
OUTPUT_NAME "${SUB_MODULE_FULL_NAME}"
)

set(__export_targets ${SUB_MODULE})
set(__export_targets ${SUB_MODULE_TARGET})

if(NOT FRAMELESSHELPER_NO_BUNDLE_RESOURCE)
if(QT_VERSION VERSION_GREATER_EQUAL "6.2")
qt_add_resources(${SUB_MODULE} framelesshelpercore
qt_add_resources(${SUB_MODULE_TARGET} framelesshelpercore
PREFIX
"/org.wangwenx190.${PROJECT_NAME}"
FILES
Expand All @@ -193,90 +192,90 @@ if(NOT FRAMELESSHELPER_NO_BUNDLE_RESOURCE)
list(APPEND __export_targets ${__qrc_targets})
if(FRAMELESSHELPER_BUILD_STATIC)
foreach(__target ${__qrc_targets})
target_sources(${SUB_MODULE} PRIVATE
target_sources(${SUB_MODULE_TARGET} PRIVATE
$<TARGET_OBJECTS:${__target}>
)
endforeach()
endif()
endif()
else()
target_sources(${SUB_MODULE} PRIVATE
target_sources(${SUB_MODULE_TARGET} PRIVATE
framelesshelpercore.qrc
)
endif()
endif()

if(FRAMELESSHELPER_BUILD_STATIC)
target_compile_definitions(${SUB_MODULE} PUBLIC FRAMELESSHELPER_CORE_STATIC)
target_compile_definitions(${SUB_MODULE_TARGET} PUBLIC FRAMELESSHELPER_CORE_STATIC)
endif()

if(FRAMELESSHELPER_NO_DEBUG_OUTPUT)
target_compile_definitions(${SUB_MODULE} PRIVATE
target_compile_definitions(${SUB_MODULE_TARGET} PRIVATE
FRAMELESSHELPER_CORE_NO_DEBUG_OUTPUT
)
endif()

if(FRAMELESSHELPER_NO_BUNDLE_RESOURCE)
target_compile_definitions(${SUB_MODULE} PUBLIC FRAMELESSHELPER_CORE_NO_BUNDLE_RESOURCE)
target_compile_definitions(${SUB_MODULE_TARGET} PUBLIC FRAMELESSHELPER_CORE_NO_BUNDLE_RESOURCE)
endif()

if(FRAMELESSHELPER_NO_PRIVATE)
target_compile_definitions(${SUB_MODULE} PUBLIC FRAMELESSHELPER_CORE_NO_PRIVATE)
target_compile_definitions(${SUB_MODULE_TARGET} PUBLIC FRAMELESSHELPER_CORE_NO_PRIVATE)
endif()

if(DEFINED FRAMELESSHELPER_NAMESPACE)
if("x${FRAMELESSHELPER_NAMESPACE}" STREQUAL "x")
message(FATAL_ERROR "FRAMELESSHELPER_NAMESPACE can't be empty!")
endif()
target_compile_definitions(${SUB_MODULE} PUBLIC FRAMELESSHELPER_NAMESPACE=${FRAMELESSHELPER_NAMESPACE})
target_compile_definitions(${SUB_MODULE_TARGET} PUBLIC FRAMELESSHELPER_NAMESPACE=${FRAMELESSHELPER_NAMESPACE})
endif()

target_compile_definitions(${SUB_MODULE} PRIVATE
target_compile_definitions(${SUB_MODULE_TARGET} PRIVATE
FRAMELESSHELPER_CORE_LIBRARY
)

if(APPLE)
target_link_libraries(${SUB_MODULE} PRIVATE
target_link_libraries(${SUB_MODULE_TARGET} PRIVATE
"-framework Foundation"
"-framework Cocoa"
"-framework AppKit"
)
elseif(UNIX)
if(TARGET X11::xcb)
target_link_libraries(${SUB_MODULE} PRIVATE
target_link_libraries(${SUB_MODULE_TARGET} PRIVATE
X11::xcb
)
endif()
if(TARGET PkgConfig::GTK3)
target_link_libraries(${SUB_MODULE} PRIVATE
target_link_libraries(${SUB_MODULE_TARGET} PRIVATE
PkgConfig::GTK3
)
target_compile_definitions(${SUB_MODULE} PRIVATE
target_compile_definitions(${SUB_MODULE_TARGET} PRIVATE
GDK_VERSION_MIN_REQUIRED=GDK_VERSION_3_6
)
endif()
endif()

if(FRAMELESSHELPER_NO_PRIVATE)
target_link_libraries(${SUB_MODULE} PRIVATE
target_link_libraries(${SUB_MODULE_TARGET} PRIVATE
Qt${QT_VERSION_MAJOR}::Core
Qt${QT_VERSION_MAJOR}::Gui
)
# Qt X11Extras was first introduced in 5.1 and got removed in 6.0
# But it was again brought back as a private feature of QtGui in 6.2
if(TARGET Qt5::X11Extras)
target_link_libraries(${SUB_MODULE} PRIVATE
target_link_libraries(${SUB_MODULE_TARGET} PRIVATE
Qt5::X11Extras
)
endif()
else()
target_link_libraries(${SUB_MODULE} PRIVATE
target_link_libraries(${SUB_MODULE_TARGET} PRIVATE
Qt${QT_VERSION_MAJOR}::CorePrivate
Qt${QT_VERSION_MAJOR}::GuiPrivate
)
endif()

target_include_directories(${SUB_MODULE} PUBLIC
target_include_directories(${SUB_MODULE_TARGET} PUBLIC
"$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/${INCLUDE_PREFIX}/../..>"
"$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/${INCLUDE_PREFIX}>"
"$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/${INCLUDE_PREFIX}/private>"
Expand All @@ -286,7 +285,7 @@ target_include_directories(${SUB_MODULE} PUBLIC
"$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/${SUB_MODULE_PATH}/private>"
)

setup_qt_stuff(TARGETS ${SUB_MODULE})
setup_qt_stuff(TARGETS ${SUB_MODULE_TARGET})
set(__extra_flags)
if(NOT FRAMELESSHELPER_NO_PERMISSIVE_CHECKS)
list(APPEND __extra_flags PERMISSIVE)
Expand All @@ -309,7 +308,7 @@ endif()
if(FRAMELESSHELPER_FORCE_LTO)
list(APPEND __extra_flags FORCE_LTO)
endif()
setup_compile_params(TARGETS ${SUB_MODULE} ${__extra_flags})
setup_compile_params(TARGETS ${SUB_MODULE_TARGET} ${__extra_flags})
if(NOT FRAMELESSHELPER_NO_INSTALL)
setup_package_export(
TARGETS ${__export_targets}
Expand All @@ -323,5 +322,5 @@ if(NOT FRAMELESSHELPER_NO_INSTALL)
endif()

if(NOT FRAMELESSHELPER_NO_SUMMARY)
dump_target_info(TARGETS ${SUB_MODULE})
dump_target_info(TARGETS ${SUB_MODULE_TARGET})
endif()
47 changes: 23 additions & 24 deletions src/quick/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS QuickTemplates2 QuickCont

set(SUB_MODULE Quick)
set(SUB_MODULE_FULL_NAME ${PROJECT_NAME}${SUB_MODULE})
set(SUB_MODULE_TARGET ${SUB_MODULE_FULL_NAME})
set(SUB_MODULE_PATH ${PROJECT_NAME}/${SUB_MODULE})

set(INCLUDE_PREFIX ../../include/${SUB_MODULE_PATH})
Expand Down Expand Up @@ -96,7 +97,7 @@ if(WIN32 AND NOT FRAMELESSHELPER_BUILD_STATIC)
COMPANY "wangwenx190"
DESCRIPTION "${PROJECT_NAME} ${SUB_MODULE} Module"
COPYRIGHT "MIT License"
ORIGINAL_FILENAME "${PROJECT_NAME}${SUB_MODULE}.dll"
ORIGINAL_FILENAME "${SUB_MODULE_FULL_NAME}.dll"
PRODUCT "${PROJECT_NAME}"
COMMENTS "Built from commit ${PROJECT_VERSION_COMMIT} on ${PROJECT_COMPILE_DATETIME} (UTC)."
LIBRARY
Expand All @@ -112,18 +113,16 @@ if(FRAMELESSHELPER_BUILD_STATIC)
else()
set(SUB_MOD_LIB_TYPE "SHARED")
endif()
add_library(${SUB_MODULE} ${SUB_MOD_LIB_TYPE} ${ALL_SOURCES})
add_library(${SUB_MODULE_FULL_NAME} ALIAS ${SUB_MODULE})
add_library(${PROJECT_NAME}::${SUB_MODULE} ALIAS ${SUB_MODULE})
add_library(${PROJECT_NAME}::${SUB_MODULE_FULL_NAME} ALIAS ${SUB_MODULE})
add_library(${SUB_MODULE_TARGET} ${SUB_MOD_LIB_TYPE} ${ALL_SOURCES})
add_library(${PROJECT_NAME}::${SUB_MODULE} ALIAS ${SUB_MODULE_TARGET})
add_library(${PROJECT_NAME}::${SUB_MODULE_FULL_NAME} ALIAS ${SUB_MODULE_TARGET})

set_target_properties(${SUB_MODULE} PROPERTIES
set_target_properties(${SUB_MODULE_TARGET} PROPERTIES
VERSION "${PROJECT_VERSION}"
SOVERSION "${PROJECT_VERSION_MAJOR}"
OUTPUT_NAME "${SUB_MODULE_FULL_NAME}"
)

set(__export_targets ${SUB_MODULE})
set(__export_targets ${SUB_MODULE_TARGET})

set(__import_base_dir "${PROJECT_BINARY_DIR}/imports")
if(DEFINED FRAMELESSHELPER_IMPORT_DIR)
Expand All @@ -136,7 +135,7 @@ endif()
# calculate the generated files, which will also break Ninja Multi-Config
# builds.
if(QT_VERSION VERSION_GREATER_EQUAL "6.3")
qt_add_qml_module(${SUB_MODULE}
qt_add_qml_module(${SUB_MODULE_TARGET}
URI "org.wangwenx190.${PROJECT_NAME}"
VERSION "1.0"
OUTPUT_DIRECTORY "${__import_base_dir}/org/wangwenx190/${PROJECT_NAME}"
Expand All @@ -158,14 +157,14 @@ if(QT_VERSION VERSION_GREATER_EQUAL "6.3")
# so we need this hack here.
if(FRAMELESSHELPER_BUILD_STATIC)
foreach(__target ${__qml_targets})
target_sources(${SUB_MODULE} PRIVATE
target_sources(${SUB_MODULE_TARGET} PRIVATE
$<TARGET_OBJECTS:${__target}>
)
endforeach()
endif()
endif()
if(NOT FRAMELESSHELPER_NO_INSTALL)
qt_query_qml_module(${SUB_MODULE}
qt_query_qml_module(${SUB_MODULE_TARGET}
URI module_uri
VERSION module_version
PLUGIN_TARGET module_plugin_target
Expand Down Expand Up @@ -217,51 +216,51 @@ if(QT_VERSION VERSION_GREATER_EQUAL "6.3")
endif()

if(FRAMELESSHELPER_BUILD_STATIC)
target_compile_definitions(${SUB_MODULE} PUBLIC FRAMELESSHELPER_QUICK_STATIC)
target_compile_definitions(${SUB_MODULE_TARGET} PUBLIC FRAMELESSHELPER_QUICK_STATIC)
endif()

if(FRAMELESSHELPER_NO_DEBUG_OUTPUT)
target_compile_definitions(${SUB_MODULE} PRIVATE
target_compile_definitions(${SUB_MODULE_TARGET} PRIVATE
FRAMELESSHELPER_QUICK_NO_DEBUG_OUTPUT
)
endif()

if(FRAMELESSHELPER_NO_BUNDLE_RESOURCE)
target_compile_definitions(${SUB_MODULE} PUBLIC FRAMELESSHELPER_QUICK_NO_BUNDLE_RESOURCE)
target_compile_definitions(${SUB_MODULE_TARGET} PUBLIC FRAMELESSHELPER_QUICK_NO_BUNDLE_RESOURCE)
endif()

if(FRAMELESSHELPER_NO_PRIVATE)
target_compile_definitions(${SUB_MODULE} PUBLIC FRAMELESSHELPER_QUICK_NO_PRIVATE)
target_compile_definitions(${SUB_MODULE_TARGET} PUBLIC FRAMELESSHELPER_QUICK_NO_PRIVATE)
endif()

if(DEFINED FRAMELESSHELPER_NAMESPACE)
if("x${FRAMELESSHELPER_NAMESPACE}" STREQUAL "x")
message(FATAL_ERROR "FRAMELESSHELPER_NAMESPACE can't be empty!")
endif()
target_compile_definitions(${SUB_MODULE} PUBLIC FRAMELESSHELPER_NAMESPACE=${FRAMELESSHELPER_NAMESPACE})
target_compile_definitions(${SUB_MODULE_TARGET} PUBLIC FRAMELESSHELPER_NAMESPACE=${FRAMELESSHELPER_NAMESPACE})
endif()

target_compile_definitions(${SUB_MODULE} PRIVATE
target_compile_definitions(${SUB_MODULE_TARGET} PRIVATE
FRAMELESSHELPER_QUICK_LIBRARY
)

if(FRAMELESSHELPER_NO_PRIVATE)
target_link_libraries(${SUB_MODULE} PRIVATE
target_link_libraries(${SUB_MODULE_TARGET} PRIVATE
Qt${QT_VERSION_MAJOR}::Quick
)
else()
target_link_libraries(${SUB_MODULE} PRIVATE
target_link_libraries(${SUB_MODULE_TARGET} PRIVATE
Qt${QT_VERSION_MAJOR}::QuickPrivate
Qt${QT_VERSION_MAJOR}::QuickTemplates2Private
Qt${QT_VERSION_MAJOR}::QuickControls2Private
)
endif()

target_link_libraries(${SUB_MODULE} PUBLIC
target_link_libraries(${SUB_MODULE_TARGET} PUBLIC
${PROJECT_NAME}::Core
)

target_include_directories(${SUB_MODULE} PUBLIC
target_include_directories(${SUB_MODULE_TARGET} PUBLIC
"$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/${INCLUDE_PREFIX}/../..>"
"$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/${INCLUDE_PREFIX}>"
"$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/${INCLUDE_PREFIX}/private>"
Expand All @@ -270,7 +269,7 @@ target_include_directories(${SUB_MODULE} PUBLIC
"$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/${SUB_MODULE_PATH}/private>"
)

setup_qt_stuff(TARGETS ${SUB_MODULE} ALLOW_KEYWORD)
setup_qt_stuff(TARGETS ${SUB_MODULE_TARGET} ALLOW_KEYWORD)
set(__extra_flags)
if(NOT FRAMELESSHELPER_NO_PERMISSIVE_CHECKS)
list(APPEND __extra_flags PERMISSIVE)
Expand All @@ -293,7 +292,7 @@ endif()
if(FRAMELESSHELPER_FORCE_LTO)
list(APPEND __extra_flags FORCE_LTO)
endif()
setup_compile_params(TARGETS ${SUB_MODULE} ${__extra_flags})
setup_compile_params(TARGETS ${SUB_MODULE_TARGET} ${__extra_flags})
if(NOT FRAMELESSHELPER_NO_INSTALL)
setup_package_export(
TARGETS ${__export_targets}
Expand All @@ -307,5 +306,5 @@ if(NOT FRAMELESSHELPER_NO_INSTALL)
endif()

if(NOT FRAMELESSHELPER_NO_SUMMARY)
dump_target_info(TARGETS ${SUB_MODULE})
dump_target_info(TARGETS ${SUB_MODULE_TARGET})
endif()
Loading

0 comments on commit 5b0d063

Please sign in to comment.