mirror of
https://github.com/qTox/qTox.git
synced 2024-03-22 14:00:36 +08:00
fix: Qt ressource system usage
Make use of the `AUTORCC` feature of cmake to simplify adding resource files to qTox. Fixes #6144
This commit is contained in:
parent
431fd7bfa2
commit
0335f20362
|
@ -73,8 +73,20 @@ project(qtox)
|
|||
|
||||
# Instruct CMake to run moc automatically when needed.
|
||||
set(CMAKE_AUTOMOC ON)
|
||||
# Run resource compilation automatically
|
||||
set(CMAKE_AUTORCC ON)
|
||||
# Enable maximum compression
|
||||
set(AUTORCC_OPTIONS -compress 9 -threshold 0)
|
||||
|
||||
set(RCC_OPTIONS -compress 9 -threshold 0)
|
||||
|
||||
if(NOT Qt5Widgets_VERSION VERSION_LESS "5.9")
|
||||
# Drop the file modification time of source files from generated files
|
||||
# to help with reproducible builds. We do not use QFileInfo.lastModified
|
||||
# so this has no unwanted side effects. This mtime started appearing in
|
||||
# Qt 5.8. The option to force the old file format without mtime was
|
||||
# added in Qt 5.9. See https://bugreports.qt.io/browse/QTBUG-58769
|
||||
set(AUTORCC_OPTIONS ${AUTORCC_OPTIONS} -format-version 1)
|
||||
endif()
|
||||
|
||||
# Use C++11.
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
|
||||
|
@ -133,14 +145,6 @@ include_directories(${CMAKE_SOURCE_DIR})
|
|||
|
||||
include(Dependencies)
|
||||
|
||||
if(NOT Qt5Widgets_VERSION VERSION_LESS "5.9")
|
||||
# Drop the file modification time of source files from generated files
|
||||
# to help with reproducible builds. We do not use QFileInfo.lastModified
|
||||
# so this has no unwanted side effects. This mtime started appearing in
|
||||
# Qt 5.8. The option to force the old file format without mtime was
|
||||
# added in Qt 5.9. See https://bugreports.qt.io/browse/QTBUG-58769
|
||||
set(RCC_OPTIONS ${RCC_OPTIONS} -format-version 1)
|
||||
endif()
|
||||
|
||||
################################################################################
|
||||
#
|
||||
|
@ -210,12 +214,9 @@ qt5_add_translation(${PROJECT_NAME}_QM_FILES
|
|||
translations/zh_TW.ts
|
||||
)
|
||||
|
||||
qt5_add_resources(
|
||||
${PROJECT_NAME}_RESOURCES
|
||||
res.qrc
|
||||
${CMAKE_CURRENT_BINARY_DIR}/translations.qrc
|
||||
DEPENDS ${${PROJECT_NAME}_QM_FILES}
|
||||
OPTIONS ${RCC_OPTIONS}
|
||||
set(${PROJECT_NAME}_RESOURCES
|
||||
res.qrc
|
||||
${CMAKE_CURRENT_BINARY_DIR}/translations.qrc
|
||||
)
|
||||
|
||||
if(NOT SMILEYS)
|
||||
|
@ -223,16 +224,14 @@ if(NOT SMILEYS)
|
|||
endif()
|
||||
|
||||
if(NOT "${SMILEYS}" STREQUAL "DISABLED")
|
||||
qt5_add_resources(
|
||||
${PROJECT_NAME}_RESOURCES
|
||||
smileys/emojione.qrc
|
||||
OPTIONS ${RCC_OPTIONS})
|
||||
set(${PROJECT_NAME}_RESOURCES
|
||||
${${PROJECT_NAME}_RESOURCES}
|
||||
smileys/emojione.qrc)
|
||||
|
||||
if(NOT "${SMILEYS}" STREQUAL "MIN")
|
||||
qt5_add_resources(
|
||||
${PROJECT_NAME}_RESOURCES
|
||||
smileys/smileys.qrc
|
||||
OPTIONS ${RCC_OPTIONS})
|
||||
set(${PROJECT_NAME}_RESOURCES
|
||||
${${PROJECT_NAME}_RESOURCES}
|
||||
smileys/smileys.qrc)
|
||||
endif()
|
||||
|
||||
endif()
|
||||
|
@ -557,6 +556,7 @@ if (${CMAKE_SYSTEM_NAME} MATCHES "Windows")
|
|||
src/platform/camera/directshow.cpp
|
||||
src/platform/camera/directshow.h
|
||||
)
|
||||
|
||||
set(${PROJECT_NAME}_RESOURCES ${${PROJECT_NAME}_RESOURCES}
|
||||
windows/qtox.rc
|
||||
)
|
||||
|
@ -652,8 +652,7 @@ add_library(${PROJECT_NAME}_static
|
|||
STATIC
|
||||
${${PROJECT_NAME}_FORMS}
|
||||
${${PROJECT_NAME}_SOURCES}
|
||||
${${PROJECT_NAME}_QM_FILES}
|
||||
${${PROJECT_NAME}_RESOURCES})
|
||||
${${PROJECT_NAME}_QM_FILES})
|
||||
target_link_libraries(${PROJECT_NAME}_static
|
||||
${CMAKE_REQUIRED_LIBRARIES}
|
||||
${ALL_LIBRARIES})
|
||||
|
|
|
@ -28,13 +28,7 @@ set(SOURCE_FILES
|
|||
"src/backend/openal.cpp"
|
||||
"src/backend/openal.h")
|
||||
|
||||
add_library(audio_library STATIC ${SOURCE_FILES})
|
||||
|
||||
qt5_add_resources(
|
||||
audio_library
|
||||
res.qrc
|
||||
OPTIONS ${RCC_OPTIONS}
|
||||
)
|
||||
add_library(audio_library STATIC ${SOURCE_FILES} resources/audio_res.qrc)
|
||||
|
||||
# We need this directory, and users of our library will need it too
|
||||
target_include_directories(audio_library PUBLIC include/)
|
||||
|
@ -42,4 +36,3 @@ target_include_directories(audio_library PUBLIC include/)
|
|||
target_link_libraries(audio_library util_library)
|
||||
target_link_libraries(audio_library Qt5::Core)
|
||||
target_link_libraries(audio_library ${OPENAL_LIBRARIES})
|
||||
|
||||
|
|
|
@ -30,5 +30,6 @@
|
|||
*/
|
||||
std::unique_ptr<IAudioControl> Audio::makeAudio(IAudioSettings& settings)
|
||||
{
|
||||
Q_INIT_RESOURCE(audio_res);
|
||||
return std::unique_ptr<IAudioControl>(new OpenAL(settings));
|
||||
}
|
||||
|
|
|
@ -48,7 +48,6 @@ add_dependency(
|
|||
Qt5::Xml)
|
||||
|
||||
include(CMakeParseArguments)
|
||||
include(Qt5CorePatches)
|
||||
|
||||
function(search_dependency pkg)
|
||||
set(options OPTIONAL STATIC_PACKAGE)
|
||||
|
|
|
@ -1,90 +0,0 @@
|
|||
#=============================================================================
|
||||
# Copyright 2005-2011 Kitware, Inc.
|
||||
# All rights reserved.
|
||||
#
|
||||
# Redistribution and use in source and binary forms, with or without
|
||||
# modification, are permitted provided that the following conditions
|
||||
# are met:
|
||||
#
|
||||
# * Redistributions of source code must retain the above copyright
|
||||
# notice, this list of conditions and the following disclaimer.
|
||||
#
|
||||
# * Redistributions in binary form must reproduce the above copyright
|
||||
# notice, this list of conditions and the following disclaimer in the
|
||||
# documentation and/or other materials provided with the distribution.
|
||||
#
|
||||
# * Neither the name of Kitware, Inc. nor the names of its
|
||||
# contributors may be used to endorse or promote products derived
|
||||
# from this software without specific prior written permission.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
# HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
#=============================================================================
|
||||
|
||||
#########################################################################
|
||||
#
|
||||
# Patched versions of macros defined in Qt5CoreMacros.cmake
|
||||
#
|
||||
#########################################################################
|
||||
|
||||
# qt5_add_resources(outfiles inputfile ... )
|
||||
|
||||
function(QT5_ADD_RESOURCES outfiles )
|
||||
|
||||
set(options)
|
||||
set(oneValueArgs)
|
||||
set(multiValueArgs OPTIONS DEPENDS)
|
||||
|
||||
cmake_parse_arguments(_RCC "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
|
||||
|
||||
set(rcc_files ${_RCC_UNPARSED_ARGUMENTS})
|
||||
set(rcc_options ${_RCC_OPTIONS})
|
||||
|
||||
foreach(it ${rcc_files})
|
||||
get_filename_component(outfilename ${it} NAME_WE)
|
||||
get_filename_component(infile ${it} ABSOLUTE)
|
||||
get_filename_component(rc_path ${infile} PATH)
|
||||
set(outfile ${CMAKE_CURRENT_BINARY_DIR}/qrc_${outfilename}.cpp)
|
||||
|
||||
set(_RC_DEPENDS)
|
||||
if(EXISTS "${infile}")
|
||||
# parse file for dependencies
|
||||
# all files are absolute paths or relative to the location of the qrc file
|
||||
file(READ "${infile}" _RC_FILE_CONTENTS)
|
||||
string(REGEX MATCHALL "<file[^<]+" _RC_FILES "${_RC_FILE_CONTENTS}")
|
||||
foreach(_RC_FILE ${_RC_FILES})
|
||||
string(REGEX REPLACE "^<file[^>]*>" "" _RC_FILE "${_RC_FILE}")
|
||||
if(NOT IS_ABSOLUTE "${_RC_FILE}")
|
||||
set(_RC_FILE "${rc_path}/${_RC_FILE}")
|
||||
endif()
|
||||
set(_RC_DEPENDS ${_RC_DEPENDS} "${_RC_FILE}")
|
||||
endforeach()
|
||||
# Since this cmake macro is doing the dependency scanning for these files,
|
||||
# let's make a configured file and add it as a dependency so cmake is run
|
||||
# again when dependencies need to be recomputed.
|
||||
qt5_make_output_file("${infile}" "" "qrc.depends" out_depends)
|
||||
configure_file("${infile}" "${out_depends}")
|
||||
else()
|
||||
# The .qrc file does not exist (yet). Let's add a dependency and hope
|
||||
# that it will be generated later
|
||||
set(out_depends)
|
||||
endif()
|
||||
|
||||
add_custom_command(OUTPUT ${outfile}
|
||||
COMMAND ${Qt5Core_RCC_EXECUTABLE}
|
||||
ARGS ${rcc_options} -name ${outfilename} -o ${outfile} ${infile}
|
||||
MAIN_DEPENDENCY ${infile}
|
||||
DEPENDS ${_RC_DEPENDS} "${out_depends}" ${_RCC_DEPENDS} VERBATIM)
|
||||
list(APPEND ${outfiles} ${outfile})
|
||||
endforeach()
|
||||
set(${outfiles} ${${outfiles}} PARENT_SCOPE)
|
||||
endfunction()
|
|
@ -22,9 +22,9 @@
|
|||
|
||||
enable_testing()
|
||||
|
||||
function(auto_test subsystem module)
|
||||
function(auto_test subsystem module extra_deps)
|
||||
add_executable(test_${module}
|
||||
test/${subsystem}/${module}_test.cpp)
|
||||
test/${subsystem}/${module}_test.cpp ${extra_deps})
|
||||
target_link_libraries(test_${module}
|
||||
${PROJECT_NAME}_static
|
||||
${CHECK_LIBRARIES}
|
||||
|
@ -34,22 +34,22 @@ function(auto_test subsystem module)
|
|||
COMMAND ${TEST_CROSSCOMPILING_EMULATOR} test_${module})
|
||||
endfunction()
|
||||
|
||||
auto_test(core core)
|
||||
auto_test(core contactid)
|
||||
auto_test(core toxid)
|
||||
auto_test(core toxstring)
|
||||
auto_test(chatlog textformatter)
|
||||
auto_test(net bsu)
|
||||
auto_test(persistence paths)
|
||||
auto_test(persistence dbschema)
|
||||
auto_test(persistence offlinemsgengine)
|
||||
auto_test(model friendmessagedispatcher)
|
||||
auto_test(model groupmessagedispatcher)
|
||||
auto_test(model messageprocessor)
|
||||
auto_test(model sessionchatlog)
|
||||
auto_test(model exiftransform)
|
||||
auto_test(model notificationgenerator)
|
||||
auto_test(core core ${${PROJECT_NAME}_RESOURCES})
|
||||
auto_test(core contactid "")
|
||||
auto_test(core toxid "")
|
||||
auto_test(core toxstring "")
|
||||
auto_test(chatlog textformatter "")
|
||||
auto_test(net bsu ${${PROJECT_NAME}_RESOURCES}) # needs nodes list
|
||||
auto_test(persistence paths "")
|
||||
auto_test(persistence dbschema "")
|
||||
auto_test(persistence offlinemsgengine "")
|
||||
auto_test(model friendmessagedispatcher "")
|
||||
auto_test(model groupmessagedispatcher "")
|
||||
auto_test(model messageprocessor "")
|
||||
auto_test(model sessionchatlog "")
|
||||
auto_test(model exiftransform "")
|
||||
auto_test(model notificationgenerator "")
|
||||
|
||||
if (UNIX)
|
||||
auto_test(platform posixsignalnotifier)
|
||||
auto_test(platform posixsignalnotifier "")
|
||||
endif()
|
||||
|
|
Loading…
Reference in New Issue
Block a user