docs/building.md
Sunshine binaries are built using CMake and requires cmake > 3.25.
It is recommended to use one of the following compilers:
| Compiler | Version |
|---|---|
| GCC | 13+ |
| Clang | 17+ |
| Apple Clang | 15+ |
Dependencies vary depending on the distribution. You can reference our linux_build.sh script for a list of dependencies we use in Debian-based and Fedora-based distributions. Please submit a PR if you would like to extend the script to support other distributions.
Sunshine requires CUDA Toolkit for NVFBC capture. There are two caveats to CUDA:
[!NOTE] To install older versions, select the appropriate run file based on your desired CUDA version and architecture according to CUDA Toolkit Archive
You can either use Homebrew or MacPorts to install dependencies.
dependencies=(
"boost" # Optional
"cmake"
"doxygen" # Optional, for docs
"graphviz" # Optional, for docs
"icu4c" # Optional, if boost is not installed
"miniupnpc"
"ninja"
"node"
"openssl@3"
"opus"
"pkg-config"
)
brew install "${dependencies[@]}"
If there are issues with an SSL header that is not found:
@tabs{
@tab{ Intel | bash ln -s /usr/local/opt/openssl/include/openssl /usr/local/include/openssl }
@tab{ Apple Silicon | bash ln -s /opt/homebrew/opt/openssl/include/openssl /opt/homebrew/include/openssl
}
}
dependencies=(
"cmake"
"curl"
"doxygen" # Optional, for docs
"graphviz" # Optional, for docs
"libopus"
"miniupnpc"
"ninja"
"npm9"
"pkgconfig"
)
sudo port install "${dependencies[@]}"
First you need to install MSYS2, then startup "MSYS2 UCRT64" and execute the following commands.
pacman -Syu
dependencies=(
"git"
"mingw-w64-ucrt-x86_64-boost" # Optional
"mingw-w64-ucrt-x86_64-cmake"
"mingw-w64-ucrt-x86_64-cppwinrt"
"mingw-w64-ucrt-x86_64-curl-winssl"
"mingw-w64-ucrt-x86_64-doxygen" # Optional, for docs... better to install official Doxygen
"mingw-w64-ucrt-x86_64-graphviz" # Optional, for docs
"mingw-w64-ucrt-x86_64-MinHook"
"mingw-w64-ucrt-x86_64-miniupnpc"
"mingw-w64-ucrt-x86_64-nodejs"
"mingw-w64-ucrt-x86_64-nsis"
"mingw-w64-ucrt-x86_64-onevpl"
"mingw-w64-ucrt-x86_64-openssl"
"mingw-w64-ucrt-x86_64-opus"
"mingw-w64-ucrt-x86_64-toolchain"
"mingw-w64-ucrt-x86_64-nlohmann_json"
)
pacman -S "${dependencies[@]}"
Ensure git is installed on your system, then clone the repository using the following command:
git clone https://github.com/ClassicOldSong/Apollo.git --recurse-submodules
cd Apollo
mkdir build
cmake -B build -G Ninja -S .
ninja -C build
[!TIP] Available build options can be found in options.cmake.
@tabs{
@tab{Linux | @tabs{
@tab{deb | bash cpack -G DEB --config ./build/CPackConfig.cmake }
@tab{rpm | bash cpack -G RPM --config ./build/CPackConfig.cmake }
}}
@tab{macOS | @tabs{
@tab{DragNDrop | bash cpack -G DragNDrop --config ./build/CPackConfig.cmake }
}}
@tab{Windows | @tabs{
@tab{Installer | bash cpack -G NSIS --config ./build/CPackConfig.cmake }
@tab{Portable | bash cpack -G ZIP --config ./build/CPackConfig.cmake }
}}
}
It may be beneficial to build remotely in some cases. This will enable easier building on different operating systems.
| Previous | Next |
|---|---|
| Troubleshooting | Contributing |