2021-04-16 12:27:01 +02:00
# SPDX-License-Identifier: GPL-3.0-only
# MuseScore-CLA-applies
2012-05-26 14:49:10 +02:00
#
2021-04-16 12:27:01 +02:00
# MuseScore
# Music Composition & Notation
2012-05-26 14:49:10 +02:00
#
2021-04-16 12:27:01 +02:00
# Copyright (C) 2021 MuseScore BVBA and others
2012-05-26 14:49:10 +02:00
#
2021-04-16 12:27:01 +02:00
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 3 as
# published by the Free Software Foundation.
2012-05-26 14:49:10 +02:00
#
2021-04-16 12:27:01 +02:00
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
2012-05-26 14:49:10 +02:00
2020-12-19 13:21:12 +01:00
###########################################
2020-12-08 11:48:52 +01:00
# Setup main application
2020-12-19 13:21:12 +01:00
###########################################
2020-12-08 11:48:52 +01:00
2020-12-19 13:21:12 +01:00
###########################################
2020-12-08 11:48:52 +01:00
# Common
2020-12-19 13:21:12 +01:00
###########################################
2020-12-08 11:48:52 +01:00
set ( EXECUTABLE_NAME mscore )
2020-12-19 13:21:12 +01:00
###########################################
2020-12-08 11:48:52 +01:00
# Platform specific
2020-12-19 13:21:12 +01:00
###########################################
include ( GetPlatformInfo )
2020-12-09 23:04:28 +01:00
if ( OS_IS_WIN )
2020-12-08 11:48:52 +01:00
set ( MSCORE_OUTPUT_NAME ${ MUSESCORE_NAME } ${ MUSESCORE_VERSION_MAJOR } )
include ( GetCompilerInfo )
2020-12-09 23:04:28 +01:00
if ( CC_IS_MSVC )
2020-12-08 11:48:52 +01:00
# MSVC recognizes a *.rc file and will invoke the resource compiler to link it
set ( ICON_RES_FILE ${ CMAKE_CURRENT_LIST_DIR } /res/mscore.rc )
2020-12-09 23:04:28 +01:00
endif ( CC_IS_MSVC )
2020-12-08 11:48:52 +01:00
2020-12-09 23:04:28 +01:00
if ( CC_IS_MINGW )
2020-12-08 11:48:52 +01:00
set ( ICON_RES_FILE ${ PROJECT_BINARY_DIR } /resfile.o )
add_custom_command (
O U T P U T $ { P R O J E C T _ B I N A R Y _ D I R } / r e s f i l e . o
C O M M A N D $ { C M A K E _ R C _ C O M P I L E R } - i m s c o r e . r c - o $ { P R O J E C T _ B I N A R Y _ D I R } / r e s f i l e . o
D E P E N D S $ { P R O J E C T _ S O U R C E _ D I R } / s r c / m a i n / r e s / m s c o r e . r c
W O R K I N G _ D I R E C T O R Y $ { P R O J E C T _ S O U R C E _ D I R } / s r c / m a i n / r e s
)
set_source_files_properties ( ${ PROJECT_BINARY_DIR } /resfile.o PROPERTIES generated true )
2020-12-09 23:04:28 +01:00
endif ( CC_IS_MINGW )
2020-12-08 11:48:52 +01:00
2020-12-09 23:04:28 +01:00
elseif ( OS_IS_LIN )
2020-12-08 11:48:52 +01:00
if ( MSCORE_INSTALL_SUFFIX )
set ( MSCORE_OUTPUT_NAME "${EXECUTABLE_NAME}${MSCORE_INSTALL_SUFFIX}" )
endif ( MSCORE_INSTALL_SUFFIX )
2020-12-10 14:36:15 +01:00
set ( CMAKE_INSTALL_RPATH "${QT_INSTALL_LIBS}" )
if ( BUILD_SHARED_LIBS )
set ( CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_RPATH};${SHARED_LIBS_INSTALL_DESTINATION}" )
endif ( BUILD_SHARED_LIBS )
2020-12-09 23:04:28 +01:00
elseif ( OS_IS_MAC )
2020-12-08 11:48:52 +01:00
set ( EXECUTABLE_NAME mscore MACOSX_BUNDLE )
set ( MACOSX_BUNDLE_ICON_FILE mscore.icns )
set ( MACOSX_BUNDLE_GUI_IDENTIFIER org.musescore. ${ MUSESCORE_NAME } )
set ( MACOSX_BUNDLE_BUNDLE_NAME ${ MUSESCORE_NAME } )
set ( MACOSX_BUNDLE_LONG_VERSION_STRING ${ MUSESCORE_VERSION_FULL } )
set ( MACOSX_BUNDLE_SHORT_VERSION_STRING ${ MUSESCORE_VERSION } )
set ( MACOSX_BUNDLE_BUNDLE_VERSION ${ MUSESCORE_VERSION_FULL } )
2021-02-05 16:43:28 +01:00
set ( MACOSX_BUNDLE_COPYRIGHT "Copyright © 1999-2021 MuseScore BVBA and others. Published under the GNU General Public License." )
2020-12-11 11:14:51 +01:00
set ( MACOSX_BUNDLE_SHORT_VERSION_STRING ${ MUSESCORE_VERSION_FULL } . ${ CMAKE_BUILD_NUMBER } )
set ( MACOSX_BUNDLE_BUNDLE_VERSION ${ MUSESCORE_VERSION_FULL } . ${ CMAKE_BUILD_NUMBER } )
2020-12-08 11:48:52 +01:00
2020-12-10 14:36:15 +01:00
set ( CMAKE_INSTALL_RPATH ${ QT_INSTALL_LIBS } )
2020-12-21 15:57:14 +01:00
elseif ( OS_IS_WASM )
include_directories ( ${ MODULE } PUBLIC
$ { P R O J E C T _ B I N A R Y _ D I R }
$ { C M A K E _ C U R R E N T _ B I N A R Y _ D I R }
$ { P R O J E C T _ S O U R C E _ D I R }
$ { P R O J E C T _ S O U R C E _ D I R } / s r c
$ { P R O J E C T _ S O U R C E _ D I R } / s r c / f r a m e w o r k
$ { P R O J E C T _ S O U R C E _ D I R } / s r c / f r a m e w o r k / g l o b a l
)
set ( EMCC_LINKER_FLAGS " \
- s W A S M = 1 \
- s F U L L _ E S 2 = 1 \
- s F U L L _ E S 3 = 1 \
- s U S E _ W E B G L 2 = 1 \
- s U S E _ Z L I B = 1 \
- s E X I T _ R U N T I M E = 1 \
- s \ " E X T R A _ E X P O R T E D _ R U N T I M E _ M E T H O D S = [ ' U T F 1 6 T o S t r i n g ' , ' s t r i n g T o U T F 1 6 ' ] \ " \
- - b i n d \
- s F E T C H = 1 \
- s F O R C E _ F I L E S Y S T E M = 1 \
- g \
- s A S S E R T I O N S = 2 \
- s D E M A N G L E _ S U P P O R T = 1 \
2020-09-26 10:58:00 +02:00
- s G L _ D E B U G = 0 \
2020-12-21 15:57:14 +01:00
- s A L L O W _ M E M O R Y _ G R O W T H = 1 \
- s T O T A L _ M E M O R Y = 3 3 5 5 4 4 3 2 \
- s E R R O R _ O N _ U N D E F I N E D _ S Y M B O L S = 0 \
2020-09-26 10:58:00 +02:00
- O 3 \
2020-12-21 15:57:14 +01:00
" )
2020-12-08 11:48:52 +01:00
else ( )
message ( FATAL_ERROR "Unsopported Platform: ${CMAKE_HOST_SYSTEM_NAME}" )
endif ( )
2020-12-19 13:21:12 +01:00
###########################################
# Dependency library declaration
###########################################
set ( FREETYPE_LIB )
if ( USE_SYSTEM_FREETYPE )
set ( FREETYPE_LIB ${ FREETYPE_LIBRARIES } )
else ( USE_SYSTEM_FREETYPE )
set ( FREETYPE_LIB mscore_freetype )
endif ( USE_SYSTEM_FREETYPE )
2020-08-31 14:16:44 +02:00
set ( LINK_LIB
$ { Q T _ L I B R A R I E S }
g l o b a l
u i
u i c o m p o n e n t s
f o n t s
s y s t e m
n e t w o r k
)
2013-04-02 20:46:07 +02:00
2020-09-04 10:30:04 +02:00
if ( BUILD_TELEMETRY_MODULE )
set ( LINK_LIB ${ LINK_LIB } telemetry )
endif ( BUILD_TELEMETRY_MODULE )
2020-12-03 08:58:32 +01:00
set ( LINK_LIB ${ LINK_LIB }
2021-06-01 13:28:49 +02:00
e n g r a v i n g
2020-12-03 08:58:32 +01:00
a c t i o n s
2021-05-14 12:21:02 +02:00
a c c e s s i b i l i t y
2020-12-03 08:58:32 +01:00
a p p s h e l l
c o n t e x t
s h o r t c u t s
w o r k s p a c e
2020-12-03 16:04:20 +01:00
a u d i o
m i d i
2020-12-03 08:58:32 +01:00
m i d i _ o l d
u s e r s c o r e s
n o t a t i o n
c o m m o n s c e n e
p a l e t t e
i n s p e c t o r
p l a y b a c k
i n s t r u m e n t s
2020-12-21 13:02:16 +01:00
c o n v e r t e r
2020-08-31 14:16:44 +02:00
)
2020-12-03 08:58:32 +01:00
2020-12-21 15:57:14 +01:00
if ( NOT CC_IS_EMSCRIPTEN )
2020-09-26 10:58:00 +02:00
list ( APPEND LINK_LIB ${ FREETYPE_LIB } )
2020-12-21 15:57:14 +01:00
list ( APPEND LINK_LIB cloud )
list ( APPEND LINK_LIB extensions )
list ( APPEND LINK_LIB languages )
2021-01-22 15:38:18 +01:00
list ( APPEND LINK_LIB iex_musicxml )
2021-01-25 10:15:02 +01:00
list ( APPEND LINK_LIB iex_bb )
2021-01-25 11:22:53 +01:00
list ( APPEND LINK_LIB iex_braille )
2021-01-25 14:00:29 +01:00
list ( APPEND LINK_LIB iex_bww )
2021-01-27 10:23:44 +01:00
list ( APPEND LINK_LIB iex_capella )
list ( APPEND LINK_LIB iex_guitarpro )
2021-02-01 08:54:41 +01:00
list ( APPEND LINK_LIB iex_midiimport )
2021-02-02 10:10:56 +01:00
list ( APPEND LINK_LIB iex_musedata )
2021-02-03 09:01:25 +01:00
list ( APPEND LINK_LIB iex_ove )
2021-02-04 08:35:15 +01:00
list ( APPEND LINK_LIB iex_audioexport )
2021-02-04 12:40:59 +01:00
list ( APPEND LINK_LIB iex_imagesexport )
2020-12-21 15:57:14 +01:00
list ( APPEND LINK_LIB plugins )
2021-06-10 16:18:02 +02:00
list ( APPEND LINK_LIB multiinstances )
2021-03-26 14:38:46 +01:00
endif ( )
if ( BUILD_AUTOBOT_MODULE )
2021-02-26 17:14:48 +01:00
list ( APPEND LINK_LIB autobot )
2020-12-21 15:57:14 +01:00
endif ( )
2020-12-03 08:58:32 +01:00
if ( BUILD_VST )
set ( LINK_LIB ${ LINK_LIB } vst )
endif ( BUILD_VST )
2020-12-21 15:57:14 +01:00
set ( MSCORE_APPEND_SRC )
if ( CC_IS_EMSCRIPTEN )
list ( APPEND LINK_LIB wasmtest )
foreach ( link ${ LINK_LIB } )
list ( APPEND MSCORE_APPEND_SRC $< TARGET_OBJECTS:${link} > )
endforeach ( )
list ( APPEND MSCORE_APPEND_SRC $< TARGET_OBJECTS:qzip > )
2020-09-26 10:58:00 +02:00
list ( APPEND MSCORE_APPEND_SRC $< TARGET_OBJECTS:sndfile > )
2020-12-21 15:57:14 +01:00
list ( APPEND MSCORE_APPEND_SRC $< TARGET_OBJECTS:fluidsynth > )
endif ( )
2020-12-19 13:21:12 +01:00
###########################################
# Executable declaration
###########################################
2020-12-21 15:57:14 +01:00
add_executable ( ${ EXECUTABLE_NAME }
$ { I C O N _ R E S _ F I L E }
m a i n . c p p
$ { M S C O R E _ A P P E N D _ S R C }
)
2020-12-19 13:21:12 +01:00
###########################################
# Setting target properties
###########################################
2020-12-21 15:57:14 +01:00
# If MSCORE_OUTPUT_NAME is set (e.g, when cmake is called by the user), the output executable will be
# called MSCORE_OUTPUT_NAME instead of 'mscore'. This can be used to have MuseScore stable and unstable
# both installed in the same prefix on a Linux system.
if ( MSCORE_OUTPUT_NAME )
set_target_properties ( ${ EXECUTABLE_NAME } PROPERTIES OUTPUT_NAME ${ MSCORE_OUTPUT_NAME } )
endif ( MSCORE_OUTPUT_NAME )
if ( OS_IS_MAC )
2021-01-02 20:23:30 +01:00
set_target_properties ( mscore PROPERTIES MACOSX_BUNDLE_INFO_PLIST ${ PROJECT_SOURCE_DIR } /build/MacOSXBundleInfo.plist.in
X C O D E _ A T T R I B U T E _ P R O D U C T _ B U N D L E _ I D E N T I F I E R $ { M A C O S X _ B U N D L E _ G U I _ I D E N T I F I E R } )
2020-12-21 15:57:14 +01:00
endif ( OS_IS_MAC )
if ( CC_IS_MINGW )
set_target_properties ( mscore PROPERTIES LINK_FLAGS "-Wl,-S -mwindows" )
endif ( CC_IS_MINGW )
if ( CC_IS_MSVC )
target_link_options ( mscore PRIVATE /SUBSYSTEM:WINDOWS /ENTRY:mainCRTStartup )
endif ( CC_IS_MSVC )
if ( OS_IS_WASM )
set_target_properties ( mscore PROPERTIES LINK_FLAGS "${EMCC_LINKER_FLAGS}" )
2020-12-19 13:21:12 +01:00
endif ( OS_IS_WASM )
2020-12-21 15:57:14 +01:00
2020-12-19 13:21:12 +01:00
if ( MSCORE_OUTPUT_NAME )
set ( MSCORE_EXECUTABLE_NAME ${ MSCORE_OUTPUT_NAME } )
else ( MSCORE_OUTPUT_NAME )
set ( MSCORE_EXECUTABLE_NAME ${ EXECUTABLE_NAME } )
endif ( MSCORE_OUTPUT_NAME )
set ( MSCORE_EXECUTABLE_NAME "${MSCORE_EXECUTABLE_NAME}" PARENT_SCOPE )
2020-12-21 15:57:14 +01:00
2020-12-09 15:08:46 +01:00
add_dependencies ( mscore workspaces )
2012-05-26 14:49:10 +02:00
2020-12-19 13:21:12 +01:00
###########################################
# Link
###########################################
2020-12-21 15:57:14 +01:00
if ( NOT CC_IS_EMSCRIPTEN )
target_link_libraries ( mscore ${ LINK_LIB } )
else ( )
target_link_libraries ( mscore PRIVATE ${ QT_LIBRARIES } )
find_package ( Qt5QmlImportScanner REQUIRED )
qt5_import_qml_plugins ( mscore PATH_TO_SCAN ${ CMAKE_SOURCE_DIR } )
endif ( )
2012-05-26 14:49:10 +02:00
2020-12-21 15:57:14 +01:00
if ( OS_IS_MAC )
2020-12-08 16:55:08 +01:00
target_link_libraries ( mscore ${ OsxFrameworks } )
2020-12-21 15:57:14 +01:00
else ( OS_IS_MAC )
2020-12-08 22:59:54 +01:00
# target_link_libraries(mscore rt) # TODO What is it?
2020-12-21 15:57:14 +01:00
endif ( OS_IS_MAC )
2020-12-08 16:55:08 +01:00
2019-02-15 13:26:32 +01:00
2020-12-19 13:21:12 +01:00
###########################################
# INSTALL
###########################################
2020-12-03 10:31:16 +01:00
2020-12-19 13:21:12 +01:00
###########################################
# Windows
###########################################
2020-12-09 23:04:28 +01:00
if ( OS_IS_WIN )
2020-12-08 16:55:08 +01:00
install ( TARGETS ${ EXECUTABLE_NAME } RUNTIME DESTINATION bin )
include ( GetCompilerInfo )
2020-12-09 23:04:28 +01:00
if ( CC_IS_MINGW )
get_filename_component ( COMPILER_DIR ${ CMAKE_CXX_COMPILER } DIRECTORY )
get_filename_component ( MINGW_ROOT ${ COMPILER_DIR } DIRECTORY )
install ( FILES
$ { M I N G W _ R O O T } / b i n / l i b g c c _ s _ s e h - 1 . d l l
$ { M I N G W _ R O O T } / b i n / l i b s t d c + + - 6 . d l l
$ { M I N G W _ R O O T } / b i n / l i b w i n p t h r e a d - 1 . d l l
D E S T I N A T I O N b i n )
endif ( CC_IS_MINGW )
# Install Qt
foreach ( QtLibrary ${ QT_LIBRARIES } )
#message(STATUS "Library ${QtLibrary}")
# always use release libs
set_target_properties ( ${ QtLibrary } PROPERTIES MAP_IMPORTED_CONFIG_DEBUG "RELEASE" )
get_target_property ( QtSharedLibrary ${ QtLibrary } LOCATION_RELEASE )
if ( EXISTS ${ QtSharedLibrary } )
list ( APPEND QtInstallLibraries ${ QtSharedLibrary } )
endif ( EXISTS ${ QtSharedLibrary } )
endforeach ( QtLibrary ${ QT_LIBRARIES } )
list ( REMOVE_DUPLICATES QtInstallLibraries )
install ( FILES
$ { P R O J E C T _ S O U R C E _ D I R } / b u i l d / q t . c o n f
$ { Q t I n s t a l l L i b r a r i e s }
$ { Q T _ I N S T A L L _ B I N S } / l i b E G L . d l l
$ { Q T _ I N S T A L L _ B I N S } / l i b G L E S v 2 . d l l
$ { Q T _ I N S T A L L _ B I N S } / o p e n g l 3 2 s w . d l l
$ { Q T _ I N S T A L L _ B I N S } / d 3 d c o m p i l e r _ 4 7 . d l l
$ { Q T _ I N S T A L L _ B I N S } / Q t 5 Q m l M o d e l s . d l l
$ { Q T _ I N S T A L L _ B I N S } / Q t 5 Q m l W o r k e r S c r i p t . d l l
D E S T I N A T I O N b i n )
install ( FILES
$ { Q T _ I N S T A L L _ P L U G I N S } / i c o n e n g i n e s / q s v g i c o n . d l l
D E S T I N A T I O N b i n / i c o n e n g i n e s )
install ( FILES
$ { Q T _ I N S T A L L _ P L U G I N S } / i m a g e f o r m a t s / q j p e g . d l l
$ { Q T _ I N S T A L L _ P L U G I N S } / i m a g e f o r m a t s / q s v g . d l l
$ { Q T _ I N S T A L L _ P L U G I N S } / i m a g e f o r m a t s / q t i f f . d l l
D E S T I N A T I O N b i n / i m a g e f o r m a t s )
2020-12-08 16:55:08 +01:00
2020-12-09 23:04:28 +01:00
install ( FILES
$ { Q T _ I N S T A L L _ P L U G I N S } / p l a t f o r m s / q w i n d o w s . d l l
D E S T I N A T I O N b i n / p l a t f o r m s )
install ( FILES
$ { Q T _ I N S T A L L _ P L U G I N S } / p r i n t s u p p o r t / w i n d o w s p r i n t e r s u p p o r t . d l l
D E S T I N A T I O N b i n / p r i n t s u p p o r t )
2020-12-10 16:44:43 +01:00
install ( DIRECTORY
$ { Q T _ I N S T A L L _ Q M L }
D E S T I N A T I O N .
R E G E X " . * d \ \ . d l l " E X C L U D E
R E G E X " . p d b " E X C L U D E
R E G E X " . * Q t M u l t i m e d i a . * " E X C L U D E
R E G E X " . * Q t S e n s o r s . * " E X C L U D E
R E G E X " . * Q t T e s t . * " E X C L U D E
R E G E X " . * Q t W e b k i t . * " E X C L U D E
)
if ( SNDFILE_LIB )
install ( FILES ${ DEPENDENCIES_DIR } /libsndfile-1.dll DESTINATION bin )
endif ( )
# Install ssl
install ( FILES
$ { D E P E N D E N C I E S _ D I R } / l i b c r y p t o - 1 _ 1 - x 6 4 . d l l
$ { D E P E N D E N C I E S _ D I R } / l i b s s l - 1 _ 1 - x 6 4 . d l l
D E S T I N A T I O N b i n )
2020-12-09 23:04:28 +01:00
if ( WIN_PORTABLE )
# deploy the files and directory structure needed for the PortableApps.com format
install ( DIRECTORY ${ PROJECT_SOURCE_DIR } /build/PortableApps/App DESTINATION ${ CMAKE_INSTALL_PREFIX } /../.. )
install ( DIRECTORY ${ PROJECT_SOURCE_DIR } /build/PortableApps/Other DESTINATION ${ CMAKE_INSTALL_PREFIX } /../.. )
install ( FILES ${ PROJECT_SOURCE_DIR } /build/PortableApps/help.html DESTINATION ${ CMAKE_INSTALL_PREFIX } /../.. )
set ( MSCORE_ICON_BASE ${ PROJECT_SOURCE_DIR } /assets/musescore-icon-round )
configure_file ( ${ PROJECT_SOURCE_DIR } /build/PortableApps/appinfo.ini.in ${ CMAKE_INSTALL_PREFIX } /../../App/AppInfo/appinfo.ini @ONLY )
install ( FILES ${ PROJECT_SOURCE_DIR } /src/main/res/mscore.ico RENAME appicon.ico DESTINATION ${ CMAKE_INSTALL_PREFIX } /../AppInfo )
install ( FILES ${ MSCORE_ICON_BASE } -16.png RENAME appicon_16.png DESTINATION ${ CMAKE_INSTALL_PREFIX } /../AppInfo )
install ( FILES ${ MSCORE_ICON_BASE } -32.png RENAME appicon_32.png DESTINATION ${ CMAKE_INSTALL_PREFIX } /../AppInfo )
install ( FILES ${ MSCORE_ICON_BASE } -128.png RENAME appicon_128.png DESTINATION ${ CMAKE_INSTALL_PREFIX } /../AppInfo )
install ( FILES ${ PROJECT_SOURCE_DIR } /assets/mscz-icon.ico RENAME mscz.ico DESTINATION ${ CMAKE_INSTALL_PREFIX } /../AppInfo/FileTypeIcons ) # icon for .MSCZ files
install ( FILES ${ PROJECT_SOURCE_DIR } /assets/mscz-icon-48.png RENAME mscz_48.png DESTINATION ${ CMAKE_INSTALL_PREFIX } /../AppInfo/FileTypeIcons ) # PNG icon for .MSCZ files
install ( FILES ${ PROJECT_SOURCE_DIR } /assets/mscx-icon.ico RENAME mscx.ico DESTINATION ${ CMAKE_INSTALL_PREFIX } /../AppInfo/FileTypeIcons ) # icon for .MSCX files
install ( FILES ${ PROJECT_SOURCE_DIR } /assets/mscx-icon-48.png RENAME mscx_48.png DESTINATION ${ CMAKE_INSTALL_PREFIX } /../AppInfo/FileTypeIcons ) # PNG icon for .MSCX files
# use a custom icon for MusicXML files (there isn't a standard icon for MusicXML files)
# install( FILES ${PROJECT_SOURCE_DIR}/assets/mxl-icon.svg RENAME mxl.svg DESTINATION ${CMAKE_INSTALL_PREFIX}/../AppInfo/FileTypeIcons) # SVG icon for .MXL (compressed MusicXML) files
# install( FILES ${PROJECT_SOURCE_DIR}/assets/mxl-icon-48.png RENAME mxl_48.png DESTINATION ${CMAKE_INSTALL_PREFIX}/../AppInfo/FileTypeIcons) # PNG icon for .MXL (compressed MusicXML) files
# install( FILES ${PROJECT_SOURCE_DIR}/assets/xml-icon.svg RENAME xml.svg DESTINATION ${CMAKE_INSTALL_PREFIX}/../AppInfo/FileTypeIcons) # SVG icon for .XML (MusicXML) files
# install( FILES ${PROJECT_SOURCE_DIR}/assets/xml-icon-48.png RENAME xml_48.png DESTINATION ${CMAKE_INSTALL_PREFIX}/../AppInfo/FileTypeIcons) # PNG icon for .XML (MusicXML) files
endif ( WIN_PORTABLE )
2020-12-19 13:21:12 +01:00
###########################################
# Linux
###########################################
2020-12-09 23:04:28 +01:00
elseif ( OS_IS_LIN )
2020-12-08 16:55:08 +01:00
install ( TARGETS ${ EXECUTABLE_NAME } RUNTIME DESTINATION bin )
# Install mscore executable (package maintainers may add "MuseScore" and/or "musescore" aliases that symlink to mscore)
if ( LN_EXECUTABLE )
add_custom_target ( mscore_alias ALL
C O M M A N D e c h o " C r e a t i n g s y m l i n k a l i a s f o r m s c o r e e x e c u t a b l e . "
C O M M A N D $ { L N _ E X E C U T A B L E } - s f " m s c o r e $ { M S C O R E _ I N S T A L L _ S U F F I X } " " m u s e s c o r e $ { M S C O R E _ I N S T A L L _ S U F F I X } "
C O M M A N D e c h o ' S y m l i n k a l i a s : m u s e s c o r e $ { M S C O R E _ I N S T A L L _ S U F F I X } - > m s c o r e $ { M S C O R E _ I N S T A L L _ S U F F I X } '
)
install ( FILES ${ PROJECT_BINARY_DIR } /src/main/musescore ${ MSCORE_INSTALL_SUFFIX } DESTINATION bin )
else ( LN_EXECUTABLE )
add_custom_target ( mscore_alias ALL COMMAND echo "No symlink aliases will be created." VERBATIM )
endif ( LN_EXECUTABLE )
# Install MuseScore icons (use SVGs where possible, but install PNGs as backup for systems that don't support SVG)
set ( MSCORE_ICON_BASE ${ PROJECT_SOURCE_DIR } /assets/musescore-icon-round )
install ( FILES ${ MSCORE_ICON_BASE } .svg RENAME mscore ${ MSCORE_INSTALL_SUFFIX } .svg DESTINATION share/icons/hicolor/scalable/apps )
install ( FILES ${ MSCORE_ICON_BASE } -16.png RENAME mscore ${ MSCORE_INSTALL_SUFFIX } .png DESTINATION share/icons/hicolor/16x16/apps )
install ( FILES ${ MSCORE_ICON_BASE } -24.png RENAME mscore ${ MSCORE_INSTALL_SUFFIX } .png DESTINATION share/icons/hicolor/24x24/apps )
install ( FILES ${ MSCORE_ICON_BASE } -32.png RENAME mscore ${ MSCORE_INSTALL_SUFFIX } .png DESTINATION share/icons/hicolor/32x32/apps )
install ( FILES ${ MSCORE_ICON_BASE } -48.png RENAME mscore ${ MSCORE_INSTALL_SUFFIX } .png DESTINATION share/icons/hicolor/48x48/apps )
install ( FILES ${ MSCORE_ICON_BASE } -64.png RENAME mscore ${ MSCORE_INSTALL_SUFFIX } .png DESTINATION share/icons/hicolor/64x64/apps )
install ( FILES ${ MSCORE_ICON_BASE } -96.png RENAME mscore ${ MSCORE_INSTALL_SUFFIX } .png DESTINATION share/icons/hicolor/96x96/apps )
install ( FILES ${ MSCORE_ICON_BASE } -128.png RENAME mscore ${ MSCORE_INSTALL_SUFFIX } .png DESTINATION share/icons/hicolor/128x128/apps )
install ( FILES ${ MSCORE_ICON_BASE } -512.png RENAME mscore ${ MSCORE_INSTALL_SUFFIX } .png DESTINATION share/icons/hicolor/512x512/apps )
# Install MIME (filetype) icons for each mimetype on Linux
install ( FILES ${ PROJECT_SOURCE_DIR } /assets/mscz-icon.svg RENAME application-x-musescore ${ MSCORE_INSTALL_SUFFIX } .svg
D E S T I N A T I O N s h a r e / i c o n s / h i c o l o r / s c a l a b l e / m i m e t y p e s ) # SVG icon for .MSCZ files
install ( FILES ${ PROJECT_SOURCE_DIR } /assets/mscz-icon-48.png RENAME application-x-musescore ${ MSCORE_INSTALL_SUFFIX } .png
D E S T I N A T I O N s h a r e / i c o n s / h i c o l o r / 4 8 x 4 8 / m i m e t y p e s ) # PNG icon for .MSCZ files
install ( FILES ${ PROJECT_SOURCE_DIR } /assets/mscx-icon.svg RENAME application-x-musescore ${ MSCORE_INSTALL_SUFFIX } +xml.svg
D E S T I N A T I O N s h a r e / i c o n s / h i c o l o r / s c a l a b l e / m i m e t y p e s ) # SVG icon for .MSCX files
install ( FILES ${ PROJECT_SOURCE_DIR } /assets/mscx-icon-48.png RENAME application-x-musescore ${ MSCORE_INSTALL_SUFFIX } +xml.png
D E S T I N A T I O N s h a r e / i c o n s / h i c o l o r / 4 8 x 4 8 / m i m e t y p e s ) # PNG icon for .MSCX files
# use a custom icon for MusicXML files (there isn't a standard icon for MusicXML files)
install ( FILES ${ PROJECT_SOURCE_DIR } /assets/mxl-icon.svg RENAME application-vnd.recordare.musicxml ${ MSCORE_INSTALL_SUFFIX } .svg
D E S T I N A T I O N s h a r e / i c o n s / h i c o l o r / s c a l a b l e / m i m e t y p e s ) # SVG icon for .MXL (compressed MusicXML) files
install ( FILES ${ PROJECT_SOURCE_DIR } /assets/mxl-icon-48.png RENAME application-vnd.recordare.musicxml ${ MSCORE_INSTALL_SUFFIX } .png
D E S T I N A T I O N s h a r e / i c o n s / h i c o l o r / 4 8 x 4 8 / m i m e t y p e s ) # PNG icon for .MXL (compressed MusicXML) files
install ( FILES ${ PROJECT_SOURCE_DIR } /assets/xml-icon.svg RENAME application-vnd.recordare.musicxml ${ MSCORE_INSTALL_SUFFIX } +xml.svg
D E S T I N A T I O N s h a r e / i c o n s / h i c o l o r / s c a l a b l e / m i m e t y p e s ) # SVG icon for .XML (MusicXML) files
install ( FILES ${ PROJECT_SOURCE_DIR } /assets/xml-icon-48.png RENAME application-vnd.recordare.musicxml ${ MSCORE_INSTALL_SUFFIX } +xml.png
D E S T I N A T I O N s h a r e / i c o n s / h i c o l o r / 4 8 x 4 8 / m i m e t y p e s ) # PNG icon for .XML (MusicXML) files
# Note: Must now run "gtk-update-icon-cache" to set the new icons. This is done in the Makefile.
2020-12-19 13:21:12 +01:00
###########################################
# MacOS
###########################################
2020-12-09 23:04:28 +01:00
elseif ( OS_IS_MAC )
2020-12-08 16:55:08 +01:00
install ( TARGETS mscore BUNDLE DESTINATION ${ CMAKE_INSTALL_PREFIX } )
install ( FILES "${PROJECT_SOURCE_DIR}/src/main/res/mscore.icns" DESTINATION ${ Mscore_SHARE_NAME } ${ Mscore_INSTALL_NAME } )
install ( FILES "${PROJECT_SOURCE_DIR}/src/main/res/musescoreDocument.icns" DESTINATION ${ Mscore_SHARE_NAME } ${ Mscore_INSTALL_NAME } )
2020-12-11 11:14:51 +01:00
install ( FILES
2021-04-05 21:19:51 +02:00
$ { P R O J E C T _ S O U R C E _ D I R } / f o n t s / b r a v u r a / B r a v u r a T e x t . o t f
2020-12-11 11:14:51 +01:00
$ { P R O J E C T _ S O U R C E _ D I R } / f o n t s / c a m p a n i a / C a m p a n i a . o t f
2021-04-05 21:19:51 +02:00
$ { P R O J E C T _ S O U R C E _ D I R } / f o n t s / e d w i n / E d w i n - B d I t a . o t f
$ { P R O J E C T _ S O U R C E _ D I R } / f o n t s / e d w i n / E d w i n - B o l d . o t f
$ { P R O J E C T _ S O U R C E _ D I R } / f o n t s / e d w i n / E d w i n - I t a l i c . o t f
$ { P R O J E C T _ S O U R C E _ D I R } / f o n t s / e d w i n / E d w i n - R o m a n . o t f
$ { P R O J E C T _ S O U R C E _ D I R } / f o n t s / f i r a s a n s / F i r a S a n s - R e g u l a r . t t f
$ { P R O J E C T _ S O U R C E _ D I R } / f o n t s / f i r a s a n s / F i r a S a n s - S e m i B o l d . t t f
$ { P R O J E C T _ S O U R C E _ D I R } / f o n t s / g o o t v i l l e / G o o t v i l l e T e x t . o t f
$ { P R O J E C T _ S O U R C E _ D I R } / f o n t s / F r e e S a n s . t t f
2020-12-11 11:14:51 +01:00
$ { P R O J E C T _ S O U R C E _ D I R } / f o n t s / F r e e S e r i f . t t f
$ { P R O J E C T _ S O U R C E _ D I R } / f o n t s / F r e e S e r i f B o l d . t t f
$ { P R O J E C T _ S O U R C E _ D I R } / f o n t s / F r e e S e r i f I t a l i c . t t f
$ { P R O J E C T _ S O U R C E _ D I R } / f o n t s / F r e e S e r i f B o l d I t a l i c . t t f
$ { P R O J E C T _ S O U R C E _ D I R } / f o n t s / l e l a n d / L e l a n d . o t f
2021-04-05 21:19:51 +02:00
$ { P R O J E C T _ S O U R C E _ D I R } / f o n t s / l e l a n d / L e l a n d T e x t . o t f
$ { P R O J E C T _ S O U R C E _ D I R } / f o n t s / m s c o r e - B C . t t f
$ { P R O J E C T _ S O U R C E _ D I R } / f o n t s / m s c o r e T a b . t t f
$ { P R O J E C T _ S O U R C E _ D I R } / f o n t s / m s c o r e / M S c o r e T e x t . t t f
$ { P R O J E C T _ S O U R C E _ D I R } / f o n t s / m s c o r e / M u s e s c o r e I c o n . t t f
$ { P R O J E C T _ S O U R C E _ D I R } / f o n t s / m u s e j a z z / M u s e J a z z T e x t . o t f
2020-12-11 11:14:51 +01:00
$ { P R O J E C T _ S O U R C E _ D I R } / f o n t s / p e t a l u m a / P e t a l u m a S c r i p t . o t f
2021-04-05 21:19:51 +02:00
$ { P R O J E C T _ S O U R C E _ D I R } / f o n t s / p e t a l u m a / P e t a l u m a T e x t . o t f
2020-12-11 11:14:51 +01:00
D E S T I N A T I O N $ { M s c o r e _ S H A R E _ N A M E } $ { M s c o r e _ I N S T A L L _ N A M E } f o n t s
)
install ( DIRECTORY
$ { Q T _ I N S T A L L _ Q M L }
D E S T I N A T I O N $ { M s c o r e _ S H A R E _ N A M E } $ { M s c o r e _ I N S T A L L _ N A M E }
R E G E X " . * Q t W e b k i t . * " E X C L U D E
R E G E X " . * Q t T e s t . * " E X C L U D E
R E G E X " . * Q t S e n s o r s . * " E X C L U D E
R E G E X " . * Q t M u l t i m e d i a . * " E X C L U D E
R E G E X " . * Q t A u d i o E n g i n e . * " E X C L U D E
R E G E X " . * _ d e b u g \ \ . d y l i b " E X C L U D E )
2020-12-19 13:21:12 +01:00
###########################################
# Wasm
###########################################
2020-12-21 15:57:14 +01:00
elseif ( OS_IS_WASM )
function ( copy_html_js_launch_files target )
set ( APPNAME ${ target } )
configure_file ( "${_qt5Core_install_prefix}/plugins/platforms/wasm_shell.html" "public_html/${target}.qt.html" )
configure_file ( "${_qt5Core_install_prefix}/plugins/platforms/qtloader.js" public_html/qtloader.js COPYONLY )
configure_file ( "${_qt5Core_install_prefix}/plugins/platforms/qtlogo.svg" public_html/qtlogo.svg COPYONLY )
endfunction ( )
copy_html_js_launch_files ( mscore )
2020-12-08 16:55:08 +01:00
else ( )
message ( FATAL_ERROR "Unsopported Platform: ${CMAKE_HOST_SYSTEM_NAME}" )
endif ( )
2020-12-19 13:21:12 +01:00
#################################################
# Miscellaneous Microsoft Visual Studio settings
#################################################
2020-12-03 10:31:16 +01:00
if ( MSVC )
# Force the "install" and "package" targets not to depend on the "all" target.
set ( CMAKE_SKIP_INSTALL_ALL_DEPENDENCY true )
set ( CMAKE_SKIP_PACKAGE_ALL_DEPENDENCY true )
# Set the startup project to "mscore".
if ( NOT ${ CMAKE_VERSION } VERSION_LESS "3.6.0" )
set_property ( DIRECTORY ${ CMAKE_CURRENT_SOURCE_DIR } PROPERTY VS_STARTUP_PROJECT mscore )
endif ( )
# Set the debugging properties for the "mscore" project.
file ( TO_NATIVE_PATH "${CMAKE_INSTALL_PREFIX}/bin" VS_DEBUGGER_WORKING_DIRECTORY )
if ( NOT ${ CMAKE_VERSION } VERSION_LESS "3.12.0" )
2020-12-08 11:48:52 +01:00
set_target_properties ( ${ EXECUTABLE_NAME } PROPERTIES VS_DEBUGGER_COMMAND "${VS_DEBUGGER_WORKING_DIRECTORY}\\${MSCORE_EXECUTABLE_NAME}${CMAKE_EXECUTABLE_SUFFIX}" )
2020-12-03 10:31:16 +01:00
endif ( )
if ( NOT ${ CMAKE_VERSION } VERSION_LESS "3.8.0" )
2020-12-08 11:48:52 +01:00
set_target_properties ( ${ EXECUTABLE_NAME } PROPERTIES VS_DEBUGGER_WORKING_DIRECTORY "${VS_DEBUGGER_WORKING_DIRECTORY}" )
2020-12-03 10:31:16 +01:00
endif ( )
if ( NOT ${ CMAKE_VERSION } VERSION_LESS "3.13.0" )
2020-12-08 11:48:52 +01:00
set_target_properties ( ${ EXECUTABLE_NAME } PROPERTIES VS_DEBUGGER_COMMAND_ARGUMENTS "--debug" )
2020-12-03 10:31:16 +01:00
endif ( )
endif ( MSVC )