跳转到内容

CMake 与链接

SFML 3 的 CMake 目标名与组件名相对 2.x 必改,工程级优先使用命名空间目标。

find_package(SFML 3 REQUIRED COMPONENTS Graphics Audio Network)
target_link_libraries(my_app PRIVATE SFML::Graphics SFML::Audio SFML::Network)
v2 Target / Component v3
sfml-system / system SFML::System / System
sfml-window / window SFML::Window / Window
sfml-graphics / graphics SFML::Graphics / Graphics
sfml-network / network SFML::Network / Network
sfml-audio / audio SFML::Audio / Audio
sfml-main / main SFML::Main / Main
  • SFML 3 默认 BUILD_SHARED_LIBS 为 OFF → 默认编静态库(与 2.x 常见发行包习惯不同)。
  • 推荐入门:官方 CMake 项目模板 cmake-sfml-project(从源码拉取 SFML)。
  • Linux(X11)新依赖:libxi-dev(原始鼠标输入);模板还列了 xrandr / xcursor / udev / freetype / flac / vorbis / gl / egl 等。
  • 3.1 额外依赖(文本 / 网络):HarfBuzz、SheenBidi、Mbed TLS、libssh2;以及 header-only:cpp-unicodelib、wepoll、qoi。
  • 手工 g++ 仍可用 -lsfml-graphics -lsfml-window -lsfml-system(发行包布局);工程级优先 CMake 命名空间目标。
const sf::Version& v = sf::version(); // major/minor/patch, isRelease, string
// 与 SFML_VERSION_MAJOR / MINOR 对照

相关教程:CMake 入门。