cmake find package; font config; clang tidy 10

This commit is contained in:
Rick Vogel 2022-11-01 16:51:26 +01:00
parent b27bfe6f02
commit c09cf8e9c7
12 changed files with 136 additions and 92 deletions

View File

@ -92,9 +92,11 @@ PenaltyExcessCharacter: 1000000
PenaltyReturnTypeOnItsOwnLine: 60
PointerAlignment: Left
RawStringFormats:
- Delimiter: pb
Language: TextProto
BasedOnStyle: google
- Language: TextProto
Delimiters:
- 'pb'
- 'proto'
BasedOnStyle: google
ReflowComments: true
SortIncludes: true
SortUsingDeclarations: true
@ -112,5 +114,6 @@ SpacesInSquareBrackets: true
Standard: Cpp11
TabWidth: 4
UseTab: Never
UseCRLF: Always
...

View File

@ -1,6 +1,6 @@
cmake_minimum_required(VERSION 3.16.3)
project(qskinny VERSION 999.99.9) # TODO get from git branch name or
project(QSkinny VERSION 999.99.9) # TODO get from git branch name or
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
@ -36,30 +36,26 @@ else()
endif()
endif()
if("${Qt5_DIR}" STREQUAL "" AND "${Qt6_DIR}" STREQUAL "")
message(FATAL_ERROR "Neither Qt5_DIR nor Qt6_DIR defined!")
else()
if(NOT "${Qt5_DIR}" STREQUAL "")
find_package(Qt5 REQUIRED COMPONENTS Core Gui OpenGL Quick Svg Widgets)
find_package(Qt5 OPTIONAL_COMPONENTS QuickWidgets WebEngine WebEngineCore)
set(Qt Qt${Qt5_VERSION_MAJOR})
set(Qt_VERSION ${Qt5_VERSION})
set(Qt_VERSION_MAJOR ${Qt5_VERSION_MAJOR})
set(Qt_VERSION_MINOR ${Qt5_VERSION_MINOR})
set(Qt_VERSION_PATCH ${Qt5_VERSION_PATCH})
elseif(NOT "${Qt6_DIR}" STREQUAL "")
if(NOT "${Qt5_DIR}" STREQUAL "")
find_package(Qt5 REQUIRED COMPONENTS Core Gui OpenGL Quick Svg Widgets)
find_package(Qt5 OPTIONAL_COMPONENTS QuickWidgets WebEngine WebEngineCore)
set(Qt Qt${Qt5_VERSION_MAJOR})
set(Qt_VERSION ${Qt5_VERSION})
set(Qt_VERSION_MAJOR ${Qt5_VERSION_MAJOR})
set(Qt_VERSION_MINOR ${Qt5_VERSION_MINOR})
set(Qt_VERSION_PATCH ${Qt5_VERSION_PATCH})
elseif(NOT "${Qt6_DIR}" STREQUAL "")
string(REPLACE "/lib/cmake/Qt6" "" Qt6_PREFIX_DIR "${Qt6_DIR}")
set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} ${Qt6_PREFIX_DIR})
string(REPLACE "/lib/cmake/Qt6" "" Qt6_PREFIX_DIR "${Qt6_DIR}")
set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} ${Qt6_PREFIX_DIR})
find_package(Qt6 REQUIRED COMPONENTS Core Gui OpenGL Quick QuickWidgets Svg Widgets)
find_package(Qt6 OPTIONAL_COMPONENTS QuickWidgets WebEngineCore WebEngineQuick)
set(Qt Qt${Qt6_VERSION_MAJOR})
set(Qt_VERSION ${Qt6_VERSION})
set(Qt_VERSION_MAJOR ${Qt6_VERSION_MAJOR})
set(Qt_VERSION_MINOR ${Qt6_VERSION_MINOR})
set(Qt_VERSION_PATCH ${Qt6_VERSION_PATCH})
endif()
find_package(Qt6 REQUIRED COMPONENTS Core Gui OpenGL Quick QuickWidgets Svg Widgets)
find_package(Qt6 OPTIONAL_COMPONENTS QuickWidgets WebEngineCore WebEngineQuick)
set(Qt Qt${Qt6_VERSION_MAJOR})
set(Qt_VERSION ${Qt6_VERSION})
set(Qt_VERSION_MAJOR ${Qt6_VERSION_MAJOR})
set(Qt_VERSION_MINOR ${Qt6_VERSION_MINOR})
set(Qt_VERSION_PATCH ${Qt6_VERSION_PATCH})
endif()
if(TRUE)
@ -70,7 +66,6 @@ if(TRUE)
endif()
# define install directories
set(QSK_INSTALL_DOCS doc)
set(QSK_INSTALL_HEADERS include)
set(QSK_INSTALL_LIBS lib)
@ -78,6 +73,15 @@ set(QSK_INSTALL_BINS bin)
set(QSK_INSTALL_PLUGINS plugins)
set(QSK_INSTALL_EXAMPLES examples)
# define debug postfix globally
set(CMAKE_DEBUG_POSTFIX d)
# define binary install directory globally
set(CMAKE_INSTALL_BINDIR ${QSK_INSTALL_BINS}$<$<CONFIG:Debug>:/debug>)
# define library install directory globally
# set(CMAKE_INSTALL_LIBDIR lib$<$<CONFIG:Debug>:/debug>)
# define install rpath globally
set(CMAKE_INSTALL_RPATH ${CMAKE_INSTALL_PREFIX}/${QSK_INSTALL_LIBS})
add_subdirectory(src)
add_subdirectory(skins)
add_subdirectory(inputcontext)
@ -98,3 +102,46 @@ endif()
# doc/*.metadox
# doc/classes/*.dox
# doc/classes/*.metadox
set(PACKAGE_NAME ${PROJECT_NAME})
set(PACKAGE_VERSION ${CMAKE_PROJECT_VERSION})
set(PACKAGE_NAMESPACE Qsk)
set(PACKAGE_LOCATION lib/cmake/${PROJECT_NAME})
install(TARGETS qskinny EXPORT ${PACKAGE_NAME}Targets
LIBRARY DESTINATION ${QSK_INSTALL_LIBS}
ARCHIVE DESTINATION ${QSK_INSTALL_LIBS}
RUNTIME DESTINATION ${QSK_INSTALL_LIBS}
INCLUDES DESTINATION ${QSK_INSTALL_HEADERS})
include(CMakePackageConfigHelpers)
write_basic_package_version_file(
${CMAKE_CURRENT_BINARY_DIR}/${PACKAGE_NAME}/${PACKAGE_NAME}ConfigVersion.cmake
VERSION ${PACKAGE_VERSION}
COMPATIBILITY AnyNewerVersion)
export(EXPORT ${PACKAGE_NAME}Targets
FILE ${CMAKE_CURRENT_BINARY_DIR}/${PACKAGE_NAME}/${PACKAGE_NAME}Targets.cmake
NAMESPACE ${PACKAGE_NAMESPACE}::)
configure_file(cmake/${PACKAGE_NAME}Config.cmake
${CMAKE_CURRENT_BINARY_DIR}/${PACKAGE_NAME}/${PACKAGE_NAME}Config.cmake
COPYONLY)
install(EXPORT ${PACKAGE_NAME}Targets
FILE
${PACKAGE_NAME}Targets.cmake
NAMESPACE
${PACKAGE_NAMESPACE}::
DESTINATION
${PACKAGE_LOCATION})
install(
FILES
cmake/${PACKAGE_NAME}Config.cmake
cmake/${PACKAGE_NAME}Macros.cmake
${CMAKE_CURRENT_BINARY_DIR}/${PACKAGE_NAME}/${PACKAGE_NAME}ConfigVersion.cmake
DESTINATION
${PACKAGE_LOCATION}
COMPONENT
Devel)

View File

@ -0,0 +1,2 @@
include("${CMAKE_CURRENT_LIST_DIR}/QSkinnyTargets.cmake")
include("${CMAKE_CURRENT_LIST_DIR}/QSkinnyMacros.cmake")

View File

@ -1,7 +1,7 @@
if(TARGET ${Qt}::Svg)
## @param SVG_FILENAME absolute filename to the svg
## @param QVG_FILENAME absolute filename to the qvg
function(svg2qvg SVG_FILENAME QVG_FILENAME)
function(qsk_svg2qvg SVG_FILENAME QVG_FILENAME)
get_filename_component(QVG_FILENAME ${QVG_FILENAME} ABSOLUTE)
get_filename_component(SVG_FILENAME ${SVG_FILENAME} ABSOLUTE)
add_custom_command(

View File

@ -39,17 +39,15 @@ target_link_libraries(${TARGET_NAME}
qskinny
qsktestsupport)
option(ENABLE_AUTOQVG "enable automatic qvg compilation" OFF)
if(ENABLE_AUTOQVG)
svg2qvg(${CMAKE_CURRENT_LIST_DIR}/svg/01.01.10.svg
${CMAKE_CURRENT_LIST_DIR}/qvg/01.01.10.qvg)
svg2qvg(${CMAKE_CURRENT_LIST_DIR}/svg/01.03.04q.svg
${CMAKE_CURRENT_LIST_DIR}/qvg/01.03.04q.qvg)
svg2qvg(${CMAKE_CURRENT_LIST_DIR}/svg/01.08.05q.svg
${CMAKE_CURRENT_LIST_DIR}/qvg/01.08.05q.qvg)
svg2qvg(${CMAKE_CURRENT_LIST_DIR}/svg/01.25.18.svg
${CMAKE_CURRENT_LIST_DIR}/qvg/01.25.18.qvg)
qsk_svg2qvg(${CMAKE_CURRENT_LIST_DIR}/svg/01.01.10.svg
${CMAKE_CURRENT_LIST_DIR}/qvg/01.01.10.qvg)
qsk_svg2qvg(${CMAKE_CURRENT_LIST_DIR}/svg/01.03.04q.svg
${CMAKE_CURRENT_LIST_DIR}/qvg/01.03.04q.qvg)
qsk_svg2qvg(${CMAKE_CURRENT_LIST_DIR}/svg/01.08.05q.svg
${CMAKE_CURRENT_LIST_DIR}/qvg/01.08.05q.qvg)
qsk_svg2qvg(${CMAKE_CURRENT_LIST_DIR}/svg/01.25.18.svg
${CMAKE_CURRENT_LIST_DIR}/qvg/01.25.18.qvg)
else()
# When cross compiling we need to have the svg2qvg tool being
# compiled for the build environment - not for the one of the target.

View File

@ -45,15 +45,15 @@ list(APPEND CONFIG hide_symbols)
# }
# }
set(MOC_DIR moc)
set(OBJECTS_DIR obj)
set(RCC_DIR rcc)
option(BUILD_QSKDLL "build qskinny as shared library" ON)
option(BUILD_EXAMPLES "build qskinny examples" ON)
option(BUILD_PLAYGROUND "build qskinny playground" ON)
option(ENABLE_PINYIN "enable romanization system for standard mandarin chinese" OFF) # TODO try find pkg-config
option(ENABLE_HUNSPELL "enable spell checker" OFF) # TODO try find pkg-config
option(BUILD_QSKDLL "Build qskinny as shared library" ON)
option(BUILD_EXAMPLES "Build qskinny examples" ON)
option(BUILD_PLAYGROUND "Build qskinny playground" ON)
option(BUILD_SVG2QVG_STANDALONE "If 'ON' application won't be linked against qskinny library" ON)
option(ENABLE_PINYIN "Enable romanization system for standard mandarin chinese" OFF) # TODO try find pkg-config
option(ENABLE_HUNSPELL "Enable spell checker" OFF) # TODO try find pkg-config
option(ENABLE_FONT_CONFIG "Enable font config for font caching" ON)
option(ENABLE_ENSURE_SKINS "Enabling fall back code, that inserts some skin factories manually when not finding skin factories as plugins" ON)
option(ENABLE_AUTOQVG "enable automatic qvg compilation" ON)
if(UNIX AND NOT APPLE)
set(LINUX TRUE)

View File

@ -15,7 +15,7 @@ list(APPEND TARGET_OTHER_FILES
metadata.json)
if(BUILD_QSKDLL)
add_library(${TARGET_NAME} SHARED ${TARGET_HEADERS} ${TARGET_SOURCES} ${TARGET_OTHER_FILES})
add_library(${TARGET_NAME} SHARED ${TARGET_HEADERS} ${TARGET_SOURCES} ${TARGET_OTHER_FILES}) # TODO remove lib files during installation?
else()
add_library(${TARGET_NAME} STATIC ${TARGET_HEADERS} ${TARGET_SOURCES} ${TARGET_OTHER_FILES})
endif()

View File

@ -15,7 +15,7 @@ list(APPEND TARGET_OTHER_FILES
metadata.json)
if(BUILD_QSKDLL)
add_library(${TARGET_NAME} SHARED ${TARGET_HEADERS} ${TARGET_SOURCES} ${TARGET_OTHER_FILES})
add_library(${TARGET_NAME} SHARED ${TARGET_HEADERS} ${TARGET_SOURCES} ${TARGET_OTHER_FILES}) # TODO remove lib files during installation?
else()
add_library(${TARGET_NAME} STATIC ${TARGET_HEADERS} ${TARGET_SOURCES} ${TARGET_OTHER_FILES})
endif()

View File

@ -1,5 +1,5 @@
include(${CMAKE_SOURCE_DIR}/features/qskconfig.cmake)
include(${CMAKE_SOURCE_DIR}/scripts/cmake/qskinny-macros.cmake)
include(${CMAKE_SOURCE_DIR}/cmake/QSkinnyMacros.cmake)
list(APPEND TARGET_HEADERS
common/QskArcMetrics.h
@ -406,13 +406,18 @@ endif()
target_include_directories(${TARGET_NAME}
PUBLIC
common
graphic
nodes
controls
layouts
dialogs
inputpanel)
$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/common>
$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/common>
$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/graphic>
$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/nodes>
$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/controls>
$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/layouts>
$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/dialogs>
$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/inputpanel>)
target_include_directories(${TARGET_NAME}
INTERFACE
$<INSTALL_INTERFACE:${QSK_INSTALL_HEADERS}>)
target_link_libraries(${TARGET_NAME}
PUBLIC
@ -438,6 +443,3 @@ set_target_properties(${TARGET_NAME}
set_target_properties(${TARGET_NAME}
PROPERTIES
AUTOGEN_BUILD_DIR ${CMAKE_CURRENT_BINARY_DIR}/qskinny_autogen)
install(TARGETS ${TARGET_NAME} DESTINATION ${QSK_INSTALL_LIBS})
install(FILES ${TARGET_HEADERS} DESTINATION ${QSK_INSTALL_HEADERS})

View File

@ -1,8 +1,3 @@
# TODO
# CONFIG += ensure_skins
# CONFIG += fontconfig
# CONFIG += qskinny
list(APPEND TARGET_HEADERS
SkinnyGlobal.h
SkinnyNamespace.h
@ -16,24 +11,6 @@ list(APPEND TARGET_SOURCES
SkinnyShapeProvider.cpp
SkinnyShortcut.cpp)
# TODO
#fontconfig{
#
# QSK_FONTDIR = $${PWD} / fonts QSK_FONTCACHEDIR =
# $${OUT_PWD} / fontconfig QSK_FONTCONF_FILE =
# $${QSK_FONTCACHEDIR} / fonts.conf
#
# QSK_FONTCONF_DATA =
# "$$cat($${PWD}/fonts.conf.in, false)" QSK_FONTCONF_DATA = $$replace(
# QSK_FONTCONF_DATA, FONTCACHEDIR, $${QSK_FONTCACHEDIR})
# QSK_FONTCONF_DATA = $$replace(
# QSK_FONTCONF_DATA, FONTDIR, $${QSK_FONTDIR})
# write_file($${QSK_FONTCONF_FILE}, QSK_FONTCONF_DATA)
#
# DEFINES +=
# FONTCONFIG_FILE = $$clean_path($$QSK_FONTCONF_FILE)
#}
set(TARGET_NAME qsktestsupport)
if (BUILD_QSKDLL)
@ -42,6 +19,20 @@ else()
add_library(${TARGET_NAME} STATIC ${TARGET_SOURCES} ${TARGET_HEADERS})
endif()
if(ENABLE_FONT_CONFIG)
set(QSK_FONTDIR ${CMAKE_CURRENT_LIST_DIR}/fonts)
set(QSK_FONTCACHEDIR ${CMAKE_CURRENT_BINARY_DIR}/fontconfig)
set(QSK_FONTCONF_FILE ${QSK_FONTCACHEDIR}/fonts.conf)
configure_file(fonts.conf.cmake.in ${QSK_FONTCONF_FILE}
@ONLY
NEWLINE_STYLE LF)
target_compile_definitions(${TARGET_NAME}
PRIVATE
FONTCONFIG_FILE=${QSK_FONTCONF_FILE})
endif()
set_target_properties(${TARGET_NAME} PROPERTIES
AUTOMOC ON)
@ -57,14 +48,12 @@ endif()
target_compile_definitions(${TARGET_NAME}
PRIVATE
PLUGIN_PATH=${CMAKE_INSTALL_PREFIX}/skins)
PLUGIN_PATH=${CMAKE_INSTALL_PREFIX}/skins) # TODO this'll work only locally since CMAKE_INSTALL_PREFIX is an absolute path
target_include_directories(${TARGET_NAME}
PUBLIC
${CMAKE_CURRENT_LIST_DIR})
option(ENABLE_ENSURE_SKINS "Enabling fall back code, that inserts some skin factories manually when not finding skin factories as plugins" ON)
if(ENABLE_ENSURE_SKINS)
target_include_directories(${TARGET_NAME} PRIVATE ${CMAKE_SOURCE_DIR}/skins)
target_compile_definitions(${TARGET_NAME} PRIVATE ENSURE_SKINS)

View File

@ -0,0 +1,6 @@
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
<dir>@QSK_FONTDIR@</dir>
<cachedir>@QSK_FONTCACHEDIR@/cache</cachedir>
</fontconfig>

View File

@ -1,9 +1,6 @@
set(TARGET_NAME svg2qvg)
set(TARGET_INSTALL_SUFFIX bin/tools)
set(TARGET_SOURCES main.cpp)
option(BUILD_SVG2QVG_STANDALONE "If 'ON' application won't be linked against qskinny library" ON)
add_executable(${TARGET_NAME} ${TARGET_SOURCES})
if(BUILD_SVG2QVG_STANDALONE)
@ -53,4 +50,4 @@ set_target_properties(${TARGET_NAME}
PROPERTIES
FOLDER tools)
install(TARGETS ${TARGET_NAME} DESTINATION ${TARGET_INSTALL_SUFFIX})
install(TARGETS ${TARGET_NAME})