Build instructions

Unknown W. Brackets edited this page Mar 19, 2018 · 89 revisions

Download the source code

(for additional information that's partially outdated, see the development page)

Install git and check out the source code (git clone , or fork and clone that). Afterwards, run (this is important!):

git submodule update --init --recursive

in order to get the translations (lang), ffmpeg libraries, and other submodules.

If you choose to build from tarballs of the source code instead of cloning the full git repository, you will need to manually download the tarball releases of each of the submodules as well (submodules are listed in this repo's .gitmodules file).


Supported Platforms

  • Windows :: Microsoft Visual Studio 2015 Community Edition or higher. NOTE: It is necessary to install the Visual Studio component "C++ support for Windows XP".
  • Linux :: gcc/g++. Debian/Ubuntu uses the build-essential package. Fedora/RHEL uses the "Development Tools" package group.
  • Mac OS X :: Xcode Command Line Tools. You will also need Homebrew installed with the sdl and cmake packages (brew install sdl2 cmake).
  • Android :: You should have the latest SDK and NDK installed.
  • Blackberry :: You should have the latest Native SDK installed. Minimum version of 10.2.0 is required.
  • Symbian :: You need GCC 4.8.3 and the NDK from xsacha's github.
  • iOS :: OS X 10.10+ with Xcode 6+ installed. If compiling a fakesigned binary intended for jailbroken iOS, you also need iOSOpenDev installed with a patched iPhoneOS SDK (sudo iod-setup sdk)

Compilers --- you will need one of the following:

  • Clang :: Minimum version of 3.4 is required. Clang is preferred over GCC.
  • GCC :: Minimum version of 4.8 is required.
  • MSVC :: Minimum version of MSVC 2015 is required (though 2013 may be close to working).

CMake (minimum version of 3.6) is also required.

Frameworks and libraries --- you will need all of these:

  • A front-end development kit, either
    • Qt :: Minimum version of 5.0 is required. All versions of Qt5 are known to work. This can make use of SDL1.2 (below) to allow controllers and improve audio.
    • or SDL :: To target the SDL frontend, install the libsdl1.2 development headers. This is called libsdl1.2-dev on Debian/Ubuntu, SDL-devel on Fedora/RHEL, sdl12 on BSD ports.
  • ffmpeg :: Be very careful about using a system FFmpeg. The FFmpeg API changes frequently, and different versions than what PPSSPP is built for are known to result in crashes and broken music/videos within games. Use the ffmpeg submodule instead to have it work properly.
  • GLEW
  • libglvnd (on some platforms)
  • Snappy, the file compression tool by Google

Now, the actual building:

Building for Windows

Open the solution and just build, it'll work. You may just need to set up a path or two to the Windows SDK (which includes the DX SDK) nowadays. A step-by-step compiling guide can be found here.

Building for Android with Android Studio

Open the PPSSPP folder as a project in Android Studio and build and run. Everything should work, provided you have installed the NDK properly.

Building for Android with Eclipse and the NDK

Install the Android SDK and NDK.

To build the native C/C++ part, from a shell or command prompt, run:


or, on Windows:


in android/. You may need to tweak the paths in the ab file.

Then just open the project in Eclipse and run on your device. Alternately, you may run android update project --path "ppsspp-dir/android/" and ant release to build without the need for Eclipse.

When you make changes to the native code, you may have to refresh or add a few spaces to for Eclipse to rebuild the APK when you run it on your device the next time.

Building for Qt platforms

The Qt frontend currently supports Linux and any other platform that has Qt available (though not officially, apart from Linux). We use CMake to build for Qt.

A Qt-based frontend is available in the Qt/ dir.

For building the package via command-line, you will need to ensure Qt5 is installed for your target platform (on Linux: Development libraries are qt5-qmake qtsystems5-dev qtmultimedia5-dev qttools5-dev-tools for Qt5. Install SDL 1.2 if you want to use USB Gamepad or improve Linux audio. For Qt's built-in audio, use qtmultimedia5-dev on Qt5.). After installing these package components, simply open up the terminal and:

./ --qt

On Mac, you can use brew to install the required dependencies:

brew upgrade
brew install qt

Then build using (this is new):

./ --qtbrew

For all platforms, the application is automatically packaged in to an installable file (.app for iOS and Mac OSX, .exe for Windows and a standalone binary on Linux).

CMake (Other platforms)

PPSSPP currently uses CMake on platforms that do not have Qt installed and wish to target SDL or native (iOS/Android/Blackberry) frontends. In order to build for most systems, create a build directory and run:

cmake path/to/ppsspp



You can specify the -G parameter to cmake to choose a generator. The NMake Makefiles, Visual Studio 11 (projects + sln), GNU Makefiles and Unix Makefiles generators have been tested.

Alternatively, run, on Linux, which will create the directory for you. If you are on Windows, you will need GNU and CMake to run the bash scripts.

Building for Android (CMake)

This is not recommended and may not be maintained. Please use the method mentioned earlier.

To build for Android using CMake, first you must set the ANDROID_NDK environment variable to point to the path of your NDK install. This is done on windows cmd with set ANDROID_NDK=X:\..., on bourne shells with export ANDROID_NDK=/path/to/ndk, and on C shells with setenv ANDROID_NDK /path/to/ndk.

Then run the script:

./ --android

After this completes successfully, it will have created the needed .so files in path/to/ppsspp/android/libs/armeabi-v7a. You can now use the build.xml in the android/ dir to build the final executable, or import the android/ folder as an existing project in Eclipse.

Note that Eclipse won't notice if you have made changes to the C++ code. Introduce a meaningless change to a random .java file such as a whitespace to get Eclipse to rebuild the project.

Also note that the Visual Studio generators aren't compatible with compilers other than Microsoft's, but NMake Makefiles works fine.

Building for iOS (CMake)

Run the script:

./ --ios

Then open the generated project in Xcode using: open *.xcodeproj Or use the command line: xcodebuild -configuration Release

Alternate method which seems to work better:

cmake -DCMAKE_TOOLCHAIN_FILE=./cmake/Toolchains/ios.cmake -DIOS_PLATFORM=OS -H. -Bbuild.ios -GXcode cd build.ios open PPSSPP.xcodeproj

Then go to the target, and set developer profile as iOS developer. Go to the General tab of the target and check the box to automatically manage signing. After that, things should work.

The bundle will be in /path/to/ppsspp/build-ios/Release-iphoneos/ You may then scp or afc it to /Applications/ and launch PPSSPP.

If this is your first time installing PPSSPP to your iOS device, you may need to run uicache as mobile in a terminal session to rebuild the SpringBoard UICache, or simply reboot.

See and for some troubleshooting information.

Building For Linux (Clang 3.4)

In order to build it under Clang environment, you will need clang-3.4 packages from the repository and install it. Then, you will need to run the command to locate where is bits/c++config.h:

locate bits/c++config.h

Usually, the c++config.h located at /usr/include/<arch>/c++/<version>/bits depending kinds of machine and installation. After located the c++config.h and other header file components, simply copy the c++config.h and other header files to /usr/include/c++/<version>/bits and placed it into the location in order to make Clang building the project without problems.

Clang works perfectly with Cmake build method, so you might need to do something before building it is run the command to set the Clang as the working compiler before building it via Cmake method:

export CC=clang
export CXX=clang++

You can also put these command into .bashrc file to make it as a default compiler.

You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Press h to open a hovercard with more details.