chore: build macOS app bundle
This commit is contained in:
parent
bffbf913c2
commit
e9cd690a71
@ -252,8 +252,7 @@ endif()
|
||||
add_subdirectory(Resources)
|
||||
add_subdirectory(Sources)
|
||||
|
||||
|
||||
if(UNIX)
|
||||
if(UNIX AND NOT APPLE)
|
||||
# various texts
|
||||
INSTALL(FILES AUTHORS LICENSE README.md DESTINATION ${OPENSPADES_INSTALL_DOC}/)
|
||||
|
||||
@ -271,15 +270,7 @@ if(UNIX)
|
||||
|
||||
if(OPENSPADES_RESOURCES)
|
||||
# install asset paks (including non-GPL one)
|
||||
install(FILES
|
||||
${CMAKE_BINARY_DIR}/Resources/pak000-Nonfree.pak
|
||||
${CMAKE_BINARY_DIR}/Resources/pak002-Base.pak
|
||||
${CMAKE_BINARY_DIR}/Resources/pak005-Models.pak
|
||||
${CMAKE_BINARY_DIR}/Resources/pak010-BaseSkin.pak
|
||||
${CMAKE_BINARY_DIR}/Resources/pak050-Locales.pak
|
||||
${CMAKE_BINARY_DIR}/Resources/pak999-References.pak
|
||||
${CMAKE_BINARY_DIR}/Resources/font-unifont.pak
|
||||
DESTINATION ${OPENSPADES_INSTALL_RESOURCES})
|
||||
install(FILES ${PAK_FILES} DESTINATION ${OPENSPADES_INSTALL_RESOURCES})
|
||||
endif(OPENSPADES_RESOURCES)
|
||||
|
||||
# Package info (used for automatic update check)
|
||||
@ -302,9 +293,35 @@ if(UNIX)
|
||||
# Currently there is no files in lib/openspades. But if you reading this message in future and want to
|
||||
# place somewhere libs, binaries or other non-media stuff, place them in lib/openspades. Thank you.
|
||||
|
||||
endif(UNIX)
|
||||
endif(UNIX AND NOT APPLE)
|
||||
|
||||
if(APPLE)
|
||||
# Create a macOS application bundle
|
||||
set_target_properties(OpenSpades PROPERTIES
|
||||
MACOSX_BUNDLE ON
|
||||
MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/XSpades/XSpades-Info.plist
|
||||
MACOSX_BUNDLE_BUNDLE_VERSION ${OPENSPADES_FULL_VERSION}
|
||||
MACOSX_BUNDLE_LONG_VERSION_STRING ${OPENSPADES_FULL_VERSION}
|
||||
MACOSX_BUNDLE_SHORT_VERSION_STRING ${OPENSPADES_FULL_VERSION}
|
||||
MACOSX_BUNDLE_GUI_IDENTIFIER jp.yvt.openspades
|
||||
MACOSX_BUNDLE_BUNDLE_NAME OpenSpades)
|
||||
|
||||
set(BUNDLE_RESOURCES ${CMAKE_CURRENT_SOURCE_DIR}/Resources/Icons/OpenSpades.icns)
|
||||
list(APPEND BUNDLE_RESOURCES ${CMAKE_CURRENT_SOURCE_DIR}/LICENSE)
|
||||
if(OPENSPADES_RESOURCES)
|
||||
list(APPEND BUNDLE_RESOURCES ${PAK_FILES})
|
||||
set_source_files_properties(${PAK_FILES}
|
||||
PROPERTIES MACOSX_PACKAGE_LOCATION Resources)
|
||||
add_dependencies(OpenSpades OpenSpades_Resources_DevPaks OpenSpades_Resources)
|
||||
endif(OPENSPADES_RESOURCES)
|
||||
list(APPEND BUNDLE_RESOURCES ${CMAKE_CURRENT_SOURCE_DIR}/Resources/PackageInfo.json)
|
||||
set_source_files_properties(${CMAKE_CURRENT_SOURCE_DIR}/Resources/PackageInfo.json
|
||||
PROPERTIES MACOSX_PACKAGE_LOCATION Resources)
|
||||
list(APPEND BUNDLE_RESOURCES ${CMAKE_CURRENT_SOURCE_DIR}/Sources/Externals/lib/libysrspades.dylib)
|
||||
set_target_properties(OpenSpades PROPERTIES RESOURCE "${BUNDLE_RESOURCES}")
|
||||
|
||||
target_sources(OpenSpades PRIVATE "${BUNDLE_RESOURCES}")
|
||||
endif(APPLE)
|
||||
|
||||
#see http://www.cmake.org/cmake/help/v2.8.11/cpack.html
|
||||
set(CPACK_PACKAGE_NAME "OpenSpades")
|
||||
|
@ -124,8 +124,7 @@ GCC 4.9 / Clang 3.2 or later is recommended because OpenSpades relies on C++11 f
|
||||
2. `vcpkg/bootstrap-vcpkg.sh`
|
||||
3. `vcpkg/vcpkg install @vcpkg_x86_64-darwin.txt`
|
||||
4. Download [macOS release of OpenSpades](https://github.com/yvt/openspades/releases), show the package contents, and copy `libysrspades.dylib` to `Sources/Externals/lib`.
|
||||
5. Download and extract the [Non-free pak](https://github.com/yvt/openspades-paks/releases/download/r33/OpenSpadesDevPackage-r33.zip). After that, copy `Nonfree/pak000-Nonfree.pak` and `font-unifont.pak` to `Resources/`.
|
||||
6. Create directory `openspades.mk` in the cloned/downloaded openspades repo and compile:
|
||||
5. Create directory `openspades.mk` in the cloned/downloaded openspades repo and compile:
|
||||
|
||||
```bash
|
||||
mkdir openspades.mk
|
||||
@ -134,13 +133,13 @@ GCC 4.9 / Clang 3.2 or later is recommended because OpenSpades relies on C++11 f
|
||||
ninja
|
||||
```
|
||||
|
||||
7. Launch:
|
||||
6. Launch:
|
||||
|
||||
```bash
|
||||
bin/openspades
|
||||
open bin/OpenSpades.app
|
||||
```
|
||||
|
||||
(Creating an application bundle is not supported yet. Universal builds aren't supported either.)
|
||||
(Universal builds aren't supported yet.)
|
||||
|
||||
## Troubleshooting
|
||||
For troubleshooting and common problems see [TROUBLESHOOTING](TROUBLESHOOTING.md).
|
||||
|
@ -1,13 +1,30 @@
|
||||
set(COMPILED_PAK_FILES
|
||||
${CMAKE_CURRENT_BINARY_DIR}/pak002-Base.pak
|
||||
${CMAKE_CURRENT_BINARY_DIR}/pak005-Models.pak
|
||||
${CMAKE_CURRENT_BINARY_DIR}/pak010-BaseSkin.pak
|
||||
${CMAKE_CURRENT_BINARY_DIR}/pak050-Locales.pak
|
||||
${CMAKE_CURRENT_BINARY_DIR}/pak999-References.pak)
|
||||
|
||||
set(PAK_FILES
|
||||
${COMPILED_PAK_FILES}
|
||||
${CMAKE_CURRENT_BINARY_DIR}/pak000-Nonfree.pak
|
||||
${CMAKE_CURRENT_BINARY_DIR}/font-unifont.pak
|
||||
PARENT_SCOPE)
|
||||
|
||||
if(OPENSPADES_RESOURCES)
|
||||
|
||||
if (WIN32)
|
||||
# No automatic downloading for Windows (for now)
|
||||
elseif (UNIX)
|
||||
add_custom_target(OpenSpades_Resources_DevPaks ALL COMMENT "Downloading non-GPL assets")
|
||||
add_custom_target(OpenSpades_Resources_DevPaks ALL COMMENT "Downloading non-GPL assets"
|
||||
DEPENDS
|
||||
${CMAKE_CURRENT_BINARY_DIR}/pak000-Nonfree.pak
|
||||
${CMAKE_CURRENT_BINARY_DIR}/font-unifont.pak)
|
||||
add_custom_command(
|
||||
TARGET OpenSpades_Resources_DevPaks
|
||||
COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/downloadpak.sh
|
||||
OUTPUT
|
||||
${CMAKE_CURRENT_BINARY_DIR}/pak000-Nonfree.pak
|
||||
${CMAKE_CURRENT_BINARY_DIR}/font-unifont.pak
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
|
||||
endif()
|
||||
|
||||
@ -23,27 +40,30 @@ if(OPENSPADES_RESOURCES)
|
||||
add_custom_target(OpenSpades_Resources ALL
|
||||
COMMENT "Packing assets"
|
||||
SOURCES ${SCRIPT_FILES} ${SHADER_FILES}
|
||||
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR})
|
||||
DEPENDS ${COMPILED_PAK_FILES})
|
||||
|
||||
if(WIN32)
|
||||
if(MSVC)
|
||||
# multi-config
|
||||
add_custom_command(
|
||||
TARGET OpenSpades_Resources
|
||||
OUTPUT ${COMPILED_PAK_FILES}
|
||||
COMMAND powershell -ExecutionPolicy Bypass ${CMAKE_CURRENT_SOURCE_DIR}/mkpak.ps1
|
||||
${CMAKE_BINARY_DIR}/bin/$<CONFIGURATION>/Resources
|
||||
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
|
||||
else()
|
||||
add_custom_command(
|
||||
TARGET OpenSpades_Resources
|
||||
OUTPUT ${COMPILED_PAK_FILES}
|
||||
COMMAND powershell -ExecutionPolicy Bypass ${CMAKE_CURRENT_SOURCE_DIR}/mkpak.ps1
|
||||
${CMAKE_BINARY_DIR}/bin/Resources
|
||||
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
|
||||
endif()
|
||||
elseif (UNIX)
|
||||
add_custom_command(
|
||||
TARGET OpenSpades_Resources
|
||||
OUTPUT ${COMPILED_PAK_FILES}
|
||||
COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/mkpak.sh
|
||||
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
|
||||
endif()
|
||||
|
||||
@ -51,7 +71,7 @@ if(OPENSPADES_RESOURCES)
|
||||
DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
|
||||
endif()
|
||||
|
||||
if(UNIX)
|
||||
if(UNIX AND NOT APPLE)
|
||||
add_custom_target(OpenSpades_Unix ALL COMMENT "Process unix stuff")
|
||||
|
||||
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/Icons)
|
||||
@ -77,4 +97,4 @@ if(UNIX)
|
||||
COMMAND sh -c \"gzip -9 -c ${CMAKE_CURRENT_BINARY_DIR}/Unix/Man/openspades.6 > openspades.6.gz\"
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/Unix/Man
|
||||
)
|
||||
endif(UNIX)
|
||||
endif(UNIX AND NOT APPLE)
|
||||
|
@ -47,6 +47,27 @@ set_target_properties(OpenSpades PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BIN
|
||||
set_target_properties(OpenSpades PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
|
||||
set_target_properties(OpenSpades PROPERTIES ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
|
||||
|
||||
if(APPLE)
|
||||
# This value is reflected to the macOS application bundle's name, so use
|
||||
# the correct capitalization
|
||||
set_target_properties(OpenSpades PROPERTIES OUTPUT_NAME OpenSpades)
|
||||
else(APPLE)
|
||||
set_target_properties(OpenSpades PROPERTIES OUTPUT_NAME openspades)
|
||||
endif(APPLE)
|
||||
|
||||
if (APPLE)
|
||||
# The built pak files are copied into the macOS application bundle. CMake
|
||||
# won't copy unless they are included in the target's source files.
|
||||
#
|
||||
# Since they are specified as `add_custom_command`'s output files, so they
|
||||
# have the `GENERATED` property. However, `GENERATED` is a directory-local
|
||||
# property (until [cmake!5308] lands in CMake 3.20). This means it needs to
|
||||
# be set again here.
|
||||
#
|
||||
# [cmake!5308]: https://gitlab.kitware.com/cmake/cmake/-/merge_requests/5308
|
||||
set_source_files_properties(${PAK_FILES} PROPERTIES GENERATED 1)
|
||||
endif(APPLE)
|
||||
|
||||
if(WIN32)
|
||||
# Use a single output directory for all configs
|
||||
# (Without this, the generated binary cannot find pak files created by mkpak.ps1 unless
|
||||
|
Loading…
x
Reference in New Issue
Block a user