SFML 2.5+ 和 CMake

3

在SFML 2.5中移除了FindSFML.cmake,那么现在导入它的首选方式是什么?

我尝试了这个方法,但它找不到SFMLConfig.cmake

cmake_minimum_required(VERSION 3.17)
project(untitled)

set(CMAKE_CXX_STANDARD 20)

find_package(SFML 2.5.1 COMPONENTS graphics REQUIRED)
add_executable(untitled "main.cpp")
target_link_libraries(untitled sfml-graphics)

SFML目录位于项目内部。我在macOS Catalina上使用CLion和CMake。

2个回答

1

我也在一个项目目录中使用clion和SFML,通常情况下我会这样做:

if(WIN32)
    set(LIB_DIR libraries/win)
    set(SHRD_EXT dll)
else()
    set(LIB_DIR libraries/unix)
    set(SHRD_EXT so)
endif(WIN32)

# find SFML 2.5
set(SFML_DIR ${LIB_DIR}/SFML-2.5.1/lib/cmake/SFML/)
find_package(SFML 2.5 COMPONENTS graphics window system audio network REQUIRED)```

libraries/winlibraries/unix 文件夹中,我有特定于平台的SFML库。

1

我根据使用设备的不同,在Windows和Linux平台上都使用SFML。

我的通用CMakeLists.txt如下:

cmake_minimum_required(VERSION 3.16)

project(AppName)

# Windows specific config
IF (WIN32)
    # Include local sfml cmake config
    set(SFML_DIR "C:/lib/SFML-2.5.1/lib/cmake/SFML")
    # Link sfml statically (Optional)
    set(SFML_STATIC_LIBRARIES TRUE)
ENDIF()

find_package(SFML 2.5.1 COMPONENTS graphics audio REQUIRED)

FILE(
    GLOB
    SOURCES
    "src/*.cpp"
)

add_executable(AppName ${SOURCES})

target_link_libraries(AppName sfml-graphics sfml-audio)

target_include_directories(AppName
    PRIVATE
    "${PROJECT_BINARY_DIR}"
    "${CMAKE_CURRENT_SOURCE_DIR}/include"
)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接