如何将 SFML 库与 CMake 链接?

问题描述 投票:0回答:2

我正在尝试在 Ubuntu 上使用 SFML 库创建一个 C++ 项目(如果重要的话,使用 VSCode)。

过去,我曾经使用以下命令来编译 SFML:

g++ main.o -o sfml-app -lsfml-graphics -lsfml-window -lsfml-system 

但最近我开始将 CMake 用于 C++ 项目,现在我发现自己很难正确包含 SFML。

这是我的

CMakeLists.txt

cmake_minimum_required(VERSION 3.8.0)
project(test VERSION 0.1.0 LANGUAGES C CXX)
include(CTest)
enable_testing()
add_executable(${PROJECT_NAME} main.cpp)
target_compile_options(${PROJECT_NAME} PRIVATE -Wall -std=c++17 -Werror -Wextra -lsfml-graphics -lsfml-window -lsfml-system)
target_link_libraries(${PROJECT_NAME} PRIVATE ${SFML_LIBRARIES})
set(CPACK_PROJECT_NAME ${PROJECT_NAME})
set(CPACK_PROJECT_VERSION ${PROJECT_VERSION})
include(CPack)
cmake sfml
2个回答
0
投票

这是一个正在运行的 SFML 项目模板,它从 github 获取 SFML 库并使用您的项目进行构建:https://github.com/SFML/cmake-sfml-project


0
投票

在您的示例中,在尝试链接到

SFML
项目之前,我根本看不到您如何获得该项目的范围。您可以使用
FetchContent
获取
SFML
存储库并使用以下命令将其包含在您的项目中:

# Makes FetchContent functionality available to us
include(FetchContent)

# Fetching the SFML repository into our project
FetchContent_Declare(SFML
    GIT_REPOSITORY https://github.com/SFML/SFML.git
    GIT_TAG 2.6.x)

# Make the repository content available to us
FetchContent_MakeAvailable(SFML)

请注意,您必须提供要从存储库中使用的

tag

一旦该项目可供我们使用,我们就可以链接到它......

target_link_libraries(${PROJECT_NAME} PRIVATE sfml-graphics)
© www.soinside.com 2019 - 2024. All rights reserved.