|
|
(8 intermediate revisions by 2 users not shown) |
Line 1: |
Line 1: |
− | = Installing dependencies =
| + | {{Template:MovedToWebpage|https://vcmi.eu/developers/Building_macOS/}} |
− | ===== Installing Xcode =====
| |
− | App Store -> Xcode
| |
− | Launch it after the installation to agree with it's license terms.
| |
− | | |
− | Alternatively Xcode can be downloaded from Apple Developers website.
| |
− | Registration is easier and every possible version is available: https://developer.apple.com/download/more/
| |
− | | |
− | ===== Setting Xcode version Xcode =====
| |
− | In case you have some weird CMake errors during generation attempts such as
| |
− | <pre>
| |
− | CMake Error: Xcode 1.5 not supported.
| |
− | </pre>
| |
− | You might need to specify installed version of Xcode:
| |
− | <pre>
| |
− | sudo /usr/bin/xcode-select --switch /Users/admin/Downloads/Xcode.app
| |
− | </pre>
| |
− | After that Cmake will be able to generate projects properly!
| |
− | | |
− | ===== Installing [https://brew.sh/ Homebrew] =====
| |
− | <pre>
| |
− | ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
| |
− | </pre>
| |
− | | |
− | ===== Installing dependencies using Homebrew =====
| |
− | <pre>
| |
− | brew install git cmake sdl2 sdl2_ttf sdl2_image boost libpng freetype ffmpeg tbb luajit
| |
− | brew install sdl2_mixer --with-smpeg2
| |
− | # Now install Qt5 for launcher
| |
− | brew install qt5
| |
− | # Make sure to read brew output on Qt carefully
| |
− | # It's will tell you how to add Qt to your $PATH environment variable
| |
− | #
| |
− | # Currently it's can be done like that
| |
− | # echo 'export PATH="/usr/local/opt/qt/bin:$PATH"' >> ~/.bash_profile
| |
− | </pre>
| |
− | | |
− | = Building VCMI in command line with Makefiles =
| |
− | ===== Getting and configuring VCMI =====
| |
− | <pre>
| |
− | # You can choose any directory
| |
− | mkdir ~/DEV && cd ~/DEV
| |
− | # Clone VCMI with all submodules
| |
− | git clone --recursive https://github.com/vcmi/vcmi.git
| |
− | # Creating directory for building
| |
− | mkdir cmake && cd cmake
| |
− | cmake ../vcmi -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release -Wno-devc
| |
− | </pre>
| |
− | You can as well build VCMI without Qt5 or launcher by disabling it:
| |
− | <pre>
| |
− | # But please don't do that unless you know what you're doing
| |
− | cmake ../vcmi -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release -DENABLE_LAUNCHER=0 -Wno-devc
| |
− | </pre>
| |
− | | |
− | ===== Building and packaging VCMI =====
| |
− | <pre>
| |
− | cd ~/DEV/cmake
| |
− | # Start build using cmake
| |
− | cmake --build . -- -j 4
| |
− | # Or you can as well use simple
| |
− | # make -j 4
| |
− | | |
− | # When build is completed you can trigger packaging into DMG
| |
− | cpack
| |
− | # After file named such as "vcmi-0.99.dmg" will be created
| |
− | </pre>
| |
− | | |
− | = Building VCMI with Xcode =
| |
− | ===== Getting and configuring VCMI =====
| |
− | <pre>
| |
− | # You can choose any directory
| |
− | mkdir ~/DEV && cd ~/DEV
| |
− | # Clone VCMI with all submodules
| |
− | git clone --recursive https://github.com/vcmi/vcmi.git
| |
− | # Creating directory for building
| |
− | mkdir cmake && cd cmake
| |
− | # Xcode is multi-configuration project so specifying CMAKE_BUILD_TYPE makes no sense
| |
− | cmake ../vcmi -G "Xcode"
| |
− | | |
− | # You can as well open project in Xcode using:
| |
− | open VCMI.xcodeproj
| |
− | </pre>
| |
− | | |
− | ===== Building and packaging VCMI =====
| |
− | <pre>
| |
− | cd ~/DEV/xcode
| |
− | # Start build. Xcode built using multiple processes by default so you don't need to specify it
| |
− | # Since it's multi-configuration project you need to specify if you want Debug build since Release is default
| |
− | cmake --build . --config Debug
| |
− | | |
− | # You have to specify build configuration for CPack. Otherwise it's will expect Release as default
| |
− | cpack -C Debug
| |
− | </pre>
| |
− | | |
− | = Building VCMI with Qt Creator =
| |
− | When opening project with Qt Creator installed using online installer you might have a problem with CMake unable to find Qt even if you added it into the $PATH environment variable. In that case try to open it from command line:
| |
− | <pre>
| |
− | open ~/Qt/Qt\ Creator.app
| |
− | </pre>
| |
− | | |
− | = Running VCMI =
| |
− | You can run VCMI from DMG, but it's will also work from your IDE be it Xcode or Qt Creator.
| |
− | | |
− | Alternatively you can run binaries directly from "bin" directory:
| |
− | <pre>
| |
− | ~/DEV/cmake/bin/vcmilauncher
| |
− | ~/DEV/cmake/bin/vcmiclient
| |
− | ~/DEV/cmake/bin/vcmiserver
| |
− | </pre>
| |
− | CMake include commands to copy all needed assets from source directory into "bin" on each build. They'll work when you build from Xcode too.
| |
− | | |
− | '''Be aware you still need directories "Data", "Mp3" and "Maps" from Heroes 3 game assets in VCMI app data directory:'''
| |
− | <pre>
| |
− | ~/Library/Application\ Support/vcmi/
| |
− | </pre>
| |
− | | |
− | ===== Some useful debugging tips =====
| |
− | Anyone who might want to debug builds, but new to macOS could find following commands useful:
| |
− | <pre>
| |
− | # To attach DMG file from command line use
| |
− | hdiutil attach vcmi-0.99.dmg
| |
− | # Detach volume:
| |
− | hdiutil detach /Volumes/vcmi-0.99
| |
− | # To view dependency paths
| |
− | otool -L /Volumes/vcmi-0.99/VCMI.app/Contents/MacOS/vcmiclient
| |
− | # To display load commands such as LC_RPATH
| |
− | otool -l /Volumes/vcmi-0.99/VCMI.app/Contents/MacOS/vcmiclient
| |
− | </pre>
| |
− | | |
− | = Troubleshooting =
| |
− | # While building '''FuzzyLite''' you may get the following error with the most recent clang: ([https://forum.vcmi.eu/t/cant-build-on-macos-sierra-10-12-6/4315/2 credit to SXX's answer on the forum])
| |
− | <syntaxhighlight lang="bash">
| |
− | /tmp/fuzzylite/fuzzylite/./fl/Operation.h:1044:24: error: passing an object that undergoes default argument promotion to 'va_start' has undefined behavior [-Werror,-Wvarargs]
| |
− | va_start(args, first);
| |
− | ^
| |
− | </syntaxhighlight>
| |
− | | |
− | For the time being, you could bypass it using older version of Xcode like 8.2.1 or adding <code>-Wno-varargs</code> compile option to '''AI/FuzzyLite/fuzzylite/CMakeLists.txt:'''
| |
− | | |
− | <syntaxhighlight lang="cmake">
| |
− | if(NOT MSVC)
| |
− | #TODO: Remove -Werror before release.
| |
− | #Add Unix compilation flags
| |
− | set(CMAKE_CXX_FLAGS "-pedantic -Wall -Wextra -Werror -Wno-varargs ${CMAKE_CXX_FLAGS}")
| |
− | </syntaxhighlight>
| |