chore: build macOS app bundle
This commit is contained in:
parent
bffbf913c2
commit
e9cd690a71
@ -252,8 +252,7 @@ endif()
|
|||||||
add_subdirectory(Resources)
|
add_subdirectory(Resources)
|
||||||
add_subdirectory(Sources)
|
add_subdirectory(Sources)
|
||||||
|
|
||||||
|
if(UNIX AND NOT APPLE)
|
||||||
if(UNIX)
|
|
||||||
# various texts
|
# various texts
|
||||||
INSTALL(FILES AUTHORS LICENSE README.md DESTINATION ${OPENSPADES_INSTALL_DOC}/)
|
INSTALL(FILES AUTHORS LICENSE README.md DESTINATION ${OPENSPADES_INSTALL_DOC}/)
|
||||||
|
|
||||||
@ -271,15 +270,7 @@ if(UNIX)
|
|||||||
|
|
||||||
if(OPENSPADES_RESOURCES)
|
if(OPENSPADES_RESOURCES)
|
||||||
# install asset paks (including non-GPL one)
|
# install asset paks (including non-GPL one)
|
||||||
install(FILES
|
install(FILES ${PAK_FILES} DESTINATION ${OPENSPADES_INSTALL_RESOURCES})
|
||||||
${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})
|
|
||||||
endif(OPENSPADES_RESOURCES)
|
endif(OPENSPADES_RESOURCES)
|
||||||
|
|
||||||
# Package info (used for automatic update check)
|
# 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
|
# 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.
|
# 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
|
#see http://www.cmake.org/cmake/help/v2.8.11/cpack.html
|
||||||
set(CPACK_PACKAGE_NAME "OpenSpades")
|
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`
|
2. `vcpkg/bootstrap-vcpkg.sh`
|
||||||
3. `vcpkg/vcpkg install @vcpkg_x86_64-darwin.txt`
|
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`.
|
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/`.
|
5. Create directory `openspades.mk` in the cloned/downloaded openspades repo and compile:
|
||||||
6. Create directory `openspades.mk` in the cloned/downloaded openspades repo and compile:
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
mkdir openspades.mk
|
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
|
ninja
|
||||||
```
|
```
|
||||||
|
|
||||||
7. Launch:
|
6. Launch:
|
||||||
|
|
||||||
```bash
|
```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
|
## Troubleshooting
|
||||||
For troubleshooting and common problems see [TROUBLESHOOTING](TROUBLESHOOTING.md).
|
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(OPENSPADES_RESOURCES)
|
||||||
|
|
||||||
if (WIN32)
|
if (WIN32)
|
||||||
# No automatic downloading for Windows (for now)
|
# No automatic downloading for Windows (for now)
|
||||||
elseif (UNIX)
|
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(
|
add_custom_command(
|
||||||
TARGET OpenSpades_Resources_DevPaks
|
|
||||||
COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/downloadpak.sh
|
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})
|
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
@ -23,27 +40,30 @@ if(OPENSPADES_RESOURCES)
|
|||||||
add_custom_target(OpenSpades_Resources ALL
|
add_custom_target(OpenSpades_Resources ALL
|
||||||
COMMENT "Packing assets"
|
COMMENT "Packing assets"
|
||||||
SOURCES ${SCRIPT_FILES} ${SHADER_FILES}
|
SOURCES ${SCRIPT_FILES} ${SHADER_FILES}
|
||||||
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR})
|
DEPENDS ${COMPILED_PAK_FILES})
|
||||||
|
|
||||||
if(WIN32)
|
if(WIN32)
|
||||||
if(MSVC)
|
if(MSVC)
|
||||||
# multi-config
|
# multi-config
|
||||||
add_custom_command(
|
add_custom_command(
|
||||||
TARGET OpenSpades_Resources
|
OUTPUT ${COMPILED_PAK_FILES}
|
||||||
COMMAND powershell -ExecutionPolicy Bypass ${CMAKE_CURRENT_SOURCE_DIR}/mkpak.ps1
|
COMMAND powershell -ExecutionPolicy Bypass ${CMAKE_CURRENT_SOURCE_DIR}/mkpak.ps1
|
||||||
${CMAKE_BINARY_DIR}/bin/$<CONFIGURATION>/Resources
|
${CMAKE_BINARY_DIR}/bin/$<CONFIGURATION>/Resources
|
||||||
|
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}
|
||||||
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
|
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
|
||||||
else()
|
else()
|
||||||
add_custom_command(
|
add_custom_command(
|
||||||
TARGET OpenSpades_Resources
|
OUTPUT ${COMPILED_PAK_FILES}
|
||||||
COMMAND powershell -ExecutionPolicy Bypass ${CMAKE_CURRENT_SOURCE_DIR}/mkpak.ps1
|
COMMAND powershell -ExecutionPolicy Bypass ${CMAKE_CURRENT_SOURCE_DIR}/mkpak.ps1
|
||||||
${CMAKE_BINARY_DIR}/bin/Resources
|
${CMAKE_BINARY_DIR}/bin/Resources
|
||||||
|
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}
|
||||||
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
|
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
|
||||||
endif()
|
endif()
|
||||||
elseif (UNIX)
|
elseif (UNIX)
|
||||||
add_custom_command(
|
add_custom_command(
|
||||||
TARGET OpenSpades_Resources
|
OUTPUT ${COMPILED_PAK_FILES}
|
||||||
COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/mkpak.sh
|
COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/mkpak.sh
|
||||||
|
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}
|
||||||
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
|
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
@ -51,7 +71,7 @@ if(OPENSPADES_RESOURCES)
|
|||||||
DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
|
DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(UNIX)
|
if(UNIX AND NOT APPLE)
|
||||||
add_custom_target(OpenSpades_Unix ALL COMMENT "Process unix stuff")
|
add_custom_target(OpenSpades_Unix ALL COMMENT "Process unix stuff")
|
||||||
|
|
||||||
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/Icons)
|
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\"
|
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
|
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 LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
|
||||||
set_target_properties(OpenSpades PROPERTIES ARCHIVE_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)
|
if(WIN32)
|
||||||
# Use a single output directory for all configs
|
# Use a single output directory for all configs
|
||||||
# (Without this, the generated binary cannot find pak files created by mkpak.ps1 unless
|
# (Without this, the generated binary cannot find pak files created by mkpak.ps1 unless
|
||||||
|
Loading…
x
Reference in New Issue
Block a user