CMAKE: started to add bundle support
parent
8a3db7b105
commit
f2a9be74a2
|
@ -1,9 +1,11 @@
|
|||
macro(engine_install TARGET FILE DESTINATION INSTALL_DATA)
|
||||
set(INSTALL_DATA_DIR "${CMAKE_INSTALL_DATADIR}/${CMAKE_PROJECT_NAME}-${TARGET}")
|
||||
get_filename_component(filename ${FILE} NAME)
|
||||
target_sources(${TARGET} PRIVATE ${DATA_DIR}/${FILE})
|
||||
set_source_files_properties(${DATA_DIR}/${FILE} PROPERTIES MACOSX_PACKAGE_LOCATION Resources/${DESTINATION})
|
||||
if (INSTALL_DATA)
|
||||
install(FILES ${DATA_DIR}/${FILE} DESTINATION ${INSTALL_DATA_DIR}/${DESTINATION} COMPONENT ${TARGET})
|
||||
endif()
|
||||
get_filename_component(filename ${FILE} NAME)
|
||||
configure_file(${DATA_DIR}/${FILE} ${CMAKE_BINARY_DIR}/${TARGET}/${DESTINATION}/${filename} COPYONLY)
|
||||
endmacro()
|
||||
|
||||
|
@ -32,7 +34,11 @@ macro(engine_add_executable)
|
|||
set(DESCRIPTION "")
|
||||
set(NAME ${_EXE_TARGET})
|
||||
set(APPICON "${_EXE_TARGET}-icon")
|
||||
set(ICON "${APPICON}.png")
|
||||
if (APPLE)
|
||||
set(ICON "${APPICON}.icns")
|
||||
else()
|
||||
set(ICON "${APPICON}.png")
|
||||
endif()
|
||||
|
||||
set(${_EXE_TARGET}_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR} CACHE INTERNAL "${_EXE_TARGET} source directory")
|
||||
if (_EXE_WINDOWED)
|
||||
|
@ -99,6 +105,25 @@ macro(engine_add_executable)
|
|||
install(FILES ${PROJECT_BINARY_DIR}/${CMAKE_PROJECT_NAME}-${_EXE_TARGET}.service DESTINATION lib/systemd/user)
|
||||
endif()
|
||||
endif()
|
||||
elseif(APPLE)
|
||||
configure_file(${ROOT_DIR}/contrib/installer/osx/application.plist.in ${CMAKE_CURRENT_BINARY_DIR}/application.plist)
|
||||
set_target_properties(${_EXE_TARGET} PROPERTIES
|
||||
MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_BINARY_DIR}/application.plist
|
||||
MACOSX_BUNDLE ON
|
||||
XCODE_ATTRIBUTE_CODE_SIGNING_REQUIRED "YES")
|
||||
set_target_properties(${_EXE_TARGET} PROPERTIES MACOSX_BUNDLE_GUI_IDENTIFIER "${CMAKE_PROJECT_NAME}.${_EXE_TARGET}")
|
||||
if (${CMAKE_GENERATOR} STREQUAL "Xcode")
|
||||
set_target_properties(${_EXE_TARGET} PROPERTIES MACOSX_BUNDLE_EXECUTABLE_NAME \${EXECUTABLE_NAME})
|
||||
set_target_properties(${_EXE_TARGET} PROPERTIES MACOSX_BUNDLE_PRODUCT_NAME \${PRODUCT_NAME})
|
||||
set_target_properties(${_EXE_TARGET} PROPERTIES MACOSX_BUNDLE_BUNDLE_NAME \${PRODUCT_NAME})
|
||||
else()
|
||||
set_target_properties(${_EXE_TARGET} PROPERTIES MACOSX_BUNDLE_PRODUCT_NAME "${_EXE_TARGET}")
|
||||
set_target_properties(${_EXE_TARGET} PROPERTIES MACOSX_BUNDLE_BUNDLE_NAME "${_EXE_TARGET}")
|
||||
endif()
|
||||
elseif(MSVC)
|
||||
target_sources(${_EXE_TARGET} PRIVATE ${ROOT_DIR}/contrib/installer/windows/application.manifest)
|
||||
elseif(MINGW)
|
||||
target_sources(${_EXE_TARGET} PRIVATE ${ROOT_DIR}/contrib/installer/windows/application.rc)
|
||||
endif()
|
||||
|
||||
set_property(GLOBAL PROPERTY ${_EXE_TARGET}_EXECUTABLE True)
|
||||
|
@ -115,10 +140,14 @@ macro(engine_add_executable)
|
|||
configure_file(lua/${luasrc} ${CMAKE_BINARY_DIR}/${_EXE_TARGET}/${datafiledir}/${filename} COPYONLY)
|
||||
endforeach()
|
||||
|
||||
if (EXISTS ${ROOT_DIR}/contrib/${ICON})
|
||||
set(ICON_FULL_PATH ${DATA_DIR}/${_EXE_TARGET}/${ICON})
|
||||
if (EXISTS ${ICON_FULL_PATH})
|
||||
if (INSTALL_DATA)
|
||||
install(FILES ${ROOT_DIR}/contrib/${ICON} DESTINATION ${INSTALL_ICON_DIR} COMPONENT ${_EXE_TARGET})
|
||||
install(FILES ${ICON_FULL_PATH} DESTINATION ${INSTALL_ICON_DIR} COMPONENT ${_EXE_TARGET})
|
||||
endif()
|
||||
target_sources(${_EXE_TARGET} PRIVATE ${ICON_FULL_PATH})
|
||||
set_target_properties(${_EXE_TARGET} PROPERTIES MACOSX_BUNDLE_ICON_FILE ${ICON})
|
||||
set_source_files_properties(${ICON_FULL_PATH} PROPERTIES MACOSX_PACKAGE_LOCATION "Resources")
|
||||
endif()
|
||||
if (INSTALL_DATA)
|
||||
install(TARGETS ${_EXE_TARGET} DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT ${_EXE_TARGET})
|
||||
|
|
|
@ -0,0 +1,22 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>en-US</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>${MACOSX_BUNDLE_EXECUTABLE_NAME}</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>@CMAKE_PROJECT_NAME@.@_EXE_TARGET@</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleIconFile</key>
|
||||
<string>@APPICON@</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>@_EXE_TARGET@</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>NSHighResolutionCapable</key>
|
||||
<true/>
|
||||
</dict>
|
||||
</plist>
|
|
@ -0,0 +1,14 @@
|
|||
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"
|
||||
xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
|
||||
<asmv3:application>
|
||||
<asmv3:windowsSettings>
|
||||
<dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
|
||||
true/pm
|
||||
</dpiAware> <!-- legacy -->
|
||||
<dpiAwareness xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">
|
||||
permonitorv2,permonitor
|
||||
</dpiAwareness> <!-- falls back to pm if pmv2 is not available -->
|
||||
</asmv3:windowsSettings>
|
||||
</asmv3:application>
|
||||
</assembly>
|
||||
<!-- kate: hl xml; -->
|
|
@ -0,0 +1 @@
|
|||
1 RT_MANIFEST "application.manifest"
|
Binary file not shown.
Loading…
Reference in New Issue