Skip to content

Fork of the official CMake starter repo. Used to keep track of my boilerplate codebase

Notifications You must be signed in to change notification settings

aseiis/cmake-sfml-starter

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

original template github: https://github.com/SFML/cmake-sfml-project

How to Use

  1. Follow the above instructions about how to use GitHub's project template feature to create your own project.

  2. Open CMakeLists.txt. Rename the project and the executable to whatever name you want. The project and executable names don't have to match.

  3. If you want to add or remove any .cpp files, change the source files listed in the add_executable call in CMakeLists.txt to match the source files your project requires. If you plan on keeping the default main.cpp file then no changes are required.

  4. 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
    
  5. 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
    
  6. Enjoy!

Upgrading SFML

SFML is found via CMake's FetchContent module. FetchContent automatically downloads SFML from GitHub and builds it alongside your own code. Beyond the convenience of not having to install SFML yourself, this ensures ABI compatability and simplifies things like specifying static versus shared libraries.

Modifying what version of SFML you want is as easy as changing the GIT_TAG argument. Currently it uses the latest in-development version of SFML 2 via the 2.6.x tag. If you're feeling adventurous and want to give SFML 3 a try, use the master tag. Beware, this requires changing your code to suit the modified API! The nice folks in the SFML community can help you with that transition and the bugs you may encounter along the way.

But I want to...

Modify CMake options by adding them as configuration parameters (with a -D flag) or by modifying the contents of CMakeCache.txt and rebuilding.

Use Static Libraries

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.

Change Compilers

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.

Change Compiler Optimizations

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.

More Reading

Here are some useful resources if you want to learn more about CMake:

About

Fork of the official CMake starter repo. Used to keep track of my boilerplate codebase

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published