mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-11-27 03:36:39 +00:00
201acf0279
Patch by Patrick (pdvisschere@edpnet.be) Citing: With some changes I could get it to work (patch included). One will also have to define the locations of the Qt5-plugins and Qt5-libs folders (`QT5_PLUGINS_DIR` and `QT5_LIBRARY_DIRS`). Maybe not all plugins/imageformats are used/needed by lyx, but they are all copied now, except for `_debug` versions which are excluded. Starting with Qt-5.12 it seems not possible anymore (or at least not easy) to link to the `_debug` versions of the qt5-frameworks (with cmake). And installing them into the bundle also does not work. So right now this is not a big loss.
68 lines
3.1 KiB
CMake
68 lines
3.1 KiB
CMake
# Finish the construction of the bundle
|
|
# by including the necessary QT libraries
|
|
|
|
set(QTPLUGINS "")
|
|
|
|
# Find a qt plugin and install it in the plugins directory
|
|
macro(install_qt_plugin _qt_plugin_name)
|
|
get_target_property(qtlib "${_qt_plugin_name}" LOCATION)
|
|
if(EXISTS ${qtlib})
|
|
get_filename_component(qtdir ${qtlib} PATH)
|
|
get_filename_component(qtdir ${qtdir} NAME)
|
|
# Installing QT plugin ${qtlib} into ${qtplugin_dest_dir}/plugins/${qtdir}
|
|
install(FILES "${qtlib}" DESTINATION ${qtplugin_dest_dir}/plugins/${qtdir} COMPONENT Runtime)
|
|
else()
|
|
message(FATAL_ERROR "Could not find QT plugin ${_qt_plugin_name}")
|
|
endif()
|
|
endmacro()
|
|
|
|
if(LYX_BUNDLE)
|
|
if(NOT APPLE)
|
|
set(installed_lyx_path bin/${_lyx}${CMAKE_EXECUTABLE_SUFFIX})
|
|
set(qtplugin_dest_dir bin)
|
|
set(qt_conf_path bin/qt.conf)
|
|
else()
|
|
set(installed_lyx_path ${LYX_BUNDLE_NAME}.app)
|
|
set(qtplugin_dest_dir "${LYX_BUNDLE_NAME}.app/Contents")
|
|
set(qt_conf_path "${LYX_BUNDLE_NAME}.app/Contents/Resources/qt.conf")
|
|
endif()
|
|
|
|
if(Qt5Core_FOUND)
|
|
file(GLOB QT_PLUGIN_DIRECTORIES "${QT_PLUGINS_DIR}/imageformats")
|
|
install(DIRECTORY ${QT_PLUGIN_DIRECTORIES} DESTINATION "${qtplugin_dest_dir}/plugins/" COMPONENT Runtime REGEX "\\_debug\\.dylib$" EXCLUDE)
|
|
if(APPLE)
|
|
if(Qt5Core_VERSION VERSION_GREATER_EQUAL 5.10.0)
|
|
install_qt_plugin("Qt5::QMacStylePlugin")
|
|
endif()
|
|
install_qt_plugin("Qt5::QCocoaIntegrationPlugin")
|
|
endif()
|
|
else()
|
|
# With QT4, just copy all the plugins
|
|
file(GLOB QT_PLUGIN_DIRECTORIES "${QT_PLUGINS_DIR}/*")
|
|
install(DIRECTORY ${QT_PLUGIN_DIRECTORIES} DESTINATION "${qtplugin_dest_dir}/plugins/" COMPONENT Runtime)
|
|
endif()
|
|
|
|
# Install code does the following:
|
|
# - Creates the qt.conf file
|
|
# - install the platform specific plugins (with Qt5)
|
|
# - Fixup the bundle
|
|
install(CODE "include(BundleUtilities)
|
|
file(WRITE \"\${CMAKE_INSTALL_PREFIX}/${qt_conf_path}\" \"[Paths]\\rPlugins = PlugIns\\rTranslations = translations\")
|
|
file(GLOB_RECURSE QTPLUGINS
|
|
\"\${CMAKE_INSTALL_PREFIX}/${qtplugin_dest_dir}/plugins/*/*${CMAKE_SHARED_LIBRARY_SUFFIX}\")
|
|
message(STATUS \"QT plugins [\${CMAKE_INSTALL_PREFIX}/${qtplugin_dest_dir}/plugins/*/*${CMAKE_SHARED_LIBRARY_SUFFIX}]: \${QTPLUGINS}\")
|
|
fixup_bundle(\"\${CMAKE_INSTALL_PREFIX}/${installed_lyx_path}\" \"\${QTPLUGINS}\" \"${QT_LIBRARY_DIRS}\")"
|
|
COMPONENT Runtime
|
|
)
|
|
|
|
if (APPLE AND LYX_DMG)
|
|
# Setup the disk image layout
|
|
install(CODE "
|
|
message(STATUS \"Creating the folder view options (.DS_Store)\")
|
|
execute_process(COMMAND /bin/ln -sf /Applications \"\${CMAKE_INSTALL_PREFIX}\")
|
|
execute_process(COMMAND /bin/bash \"${CMAKE_CURRENT_SOURCE_DIR}/../../MacOSX/set_bundle_display_options.sh\"
|
|
\"${CMAKE_BINARY_DIR}/ds_store\" \"${_lyx}\" \"${TOP_CMAKE_PATH}/../MacOSX/dmg-background.png\" 560 364)
|
|
")
|
|
endif()
|
|
endif()
|