-
If you use Linux, install SFML's dependencies using your system package manager. On Ubuntu and other Debian-based distributions you can use the following commands:
sudo apt update sudo apt install \ libxrandr-dev \ libxcursor-dev \ libudev-dev \ libfreetype-dev \ libopenal-dev \ libflac-dev \ libvorbis-dev \ libgl1-mesa-dev \ libegl1-mesa-dev
-
Configure and build your project. Most popular IDEs support CMake projects with very little effort on your part.
Using CMake from the command line is straightforward as well.
For a single-configuration generator (typically the case on Linux and macOS):
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release cmake --build build
For a multi-configuration generator (typically the case on Windows):
cmake -S . -B build cmake --build build --config Release
-
Enjoy!
Modify CMake options by adding them as configuration parameters (with a -D
flag) or by modifying the contents of CMakeCache.txt and rebuilding.
By default, SFML builds shared libraries and this default is inherited by your project.
CMake's BUILD_SHARED_LIBS
option lets you pick static or shared libraries for the entire project.
See the variety of CMAKE_<LANG>_COMPILER
options.
In particular, you'll want to modify CMAKE_CXX_COMPILER
to point to the C++ compiler you wish to use.
CMake abstracts away specific optimizer flags through the CMAKE_BUILD_TYPE
option.
By default, this project recommends Release
builds which enable optimizations.
Other build types include Debug
builds which enable debug symbols but disable optimizations.
If you're using a multi-configuration generator (as is often the case on Windows), you can modify the CMAKE_CONFIGURATION_TYPES
option.
While CMake will attempt to pick a suitable default generator, some systems offer a number of generators to choose from.
Ubuntu, for example, offers Makefiles and Ninja as two potential options.
For a list of generators, click here.
To modify the generator you're using you must reconfigure your project providing a -G
flag with a value corresponding to the generator you want.
You can't simply modify an entry in the CMakeCache.txt file unlike the above options.
Then you may rebuild your project with this new generator.
Here are some useful resources if you want to learn more about CMake:
- How to Use CMake Without the Agonizing Pain - Part 1
- How to Use CMake Without the Agonizing Pain - Part 2
- Better CMake YouTube series by Jefferon Amstutz
The source code licensed under GPL v3