Skip to content
Building JUCE projects using CMake made easy
Branch: master
Clone or download
Latest commit 25f9a59 Jun 19, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github Add PR template that reminds us to update the docs Apr 13, 2018
Jucer2Reprojucer Support newer value for "Use IPP Library" exporter setting Jun 4, 2019
ci Build with VS2019 on CI Apr 20, 2019
cmake Warn when trying to use entitlements with non-Xcode generators Jun 18, 2019
docs Support the "Use IPP Library" exporter setting Jun 4, 2019
generated [!API] Change keyword to match actual technology name May 7, 2019
tests Set variables closer to where they are used May 30, 2019
.appveyor.yml Make it easier to know what has changed when running "git diff" Mar 2, 2019
.azure-pipelines.yml Build with VS2019 on CI Apr 20, 2019
.clang-format Reformat C++ code using the latest clang-format Nov 6, 2018
.gitignore Make FRUT installable Feb 10, 2018
.travis.yml Always specify the CMake generator for consistency May 19, 2019
CMakeLists.txt Make FRUT installable Feb 10, 2018 Add Nov 15, 2018 Add Nov 10, 2017
FRUT.svg Add FRUT logo Mar 21, 2019
README.rst Update README to reflect newly supported exporter setting Jun 4, 2019


Contributor Covenant Code of Conduct AppVeyor build status Azure Pipelines build status Travis CI build status Documentation status


FRUT makes it easy to build JUCE projects using CMake instead of Projucer. It enables more flexibility in project architecture, simplified CI setup, and easier integration with other JUCE and non-JUCE projects. Converting an existing JUCE project to FRUT is easy, and you don't need to be a CMake expert to use it!

In short

Table of Contents


JUCE comes with its own project generation tool, Projucer, which is very useful when starting a JUCE project. However, Projucer doesn't scale well when you want to make some aspects of your project configurable, when you want to add external libraries, when you want to use Continuous Integration, or when you want to manage several projects at once.

FRUT was created to overcome these limitations, while making it very easy to migrate an existing JUCE project that uses Projucer. Since FRUT is based on CMake, you also get access to many great features of CMake, including testing and packaging utilities.


FRUT currently contains:


  • CMake, version 3.4 minimum
  • JUCE, version 4.2.0 minimum

Supported Projucer exporters

Reprojucer.cmake and Jucer2Reprojucer support the following Projucer exporters (also known as "export targets"):

SupportedExporterMissing features
✔️Xcode (MacOSX) 8 unsupported Xcode exporter settings and
2 unsupported Xcode (MacOSX) exporter settings
Xcode (iOS) 8 unsupported Xcode exporter settings
✔️Visual Studio 2019 1 unsupported Visual Studio exporter setting
✔️Visual Studio 2017
✔️Visual Studio 2015
✔️Visual Studio 2013
✔️Linux Makefile
✔️Code::Blocks (Windows)
✔️Code::Blocks (Linux)


You can read the documentation of FRUT on Read the Docs:

Getting started

Let's consider that you have a copy of JUCE, a copy of FRUT and a JUCE project called MyGreatProject following this folder structure:

├── FRUT/
├── JUCE/
└── MyGreatProject/
    ├── Source/
    └── MyGreatProject.jucer

We first build and install FRUT with CMake:

$ cd <root>/FRUT/

$ mkdir build && cd build/

$ cmake .. -DCMAKE_INSTALL_PREFIX=../prefix -DJUCE_ROOT=../../JUCE
-- Configuring done
-- Generating done
-- Build files have been written to: <root>/FRUT/build

$ cmake --build . --target install

Then we convert MyGreatProject.jucer to a new CMakeLists.txt file:

$ cd <root>/MyGreatProject/

$ ../FRUT/prefix/FRUT/bin/Jucer2Reprojucer MyGreatProject.jucer ../FRUT/prefix/FRUT/cmake/Reprojucer.cmake

<root>/MyGreatProject/CMakeLists.txt has been successfully generated.

Now we can build MyGreatProject using CMake:

$ cd <root>/MyGreatProject/

$ mkdir build && cd build/

$ cmake .. -G<generator>
-- Configuring done
-- Generating done
-- Build files have been written to: <root>/MyGreatProject/build

$ cmake --build .

<generator> can be one of many CMake Generators supported by your platform, including Ninja, NMake Makefiles (on Windows), Unix Makefiles (on Linux and macOS), Visual Studio 2013, 2015 and 2017 (on Windows), and Xcode (on macOS).


Contributions to FRUT are very welcomed and you can contribute even if you don't know anything about CMake. See the file for more details.


FRUT follows the all-contributors specification and is brought to you by these awesome contributors:

Alain Martin

💻 👀 📖

Matthieu Talbot

👀 💻 🐛

Florian Goltz


Fabien Roussel

🐛 👀

Xavier Jouvenot

🐛 👀

Nikolai Wuttke


Dominik Grzelak


Dennis Scheffer

🐛 💻

Scott Wheeler

💻 🐛

Iqra Shahzad


Romain Clement


Jerry Chan

🐛 👀


GNU General Public License

FRUT is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

FRUT is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the LICENSE file for more details.

You can’t perform that action at this time.