gpt4 book ai didi

c++ - 缺少 cmake 的 sfml 库

转载 作者:行者123 更新时间:2023-11-30 05:17:51 26 4
gpt4 key购买 nike

这里是 C++ 新手,我正在尝试为 CLion (Win 10) 实现 SFML 库。

我关注了这个http://www.sfml-dev.org/tutorials/2.0/compile-with-cmake.php指南并使用 cmake gui 和 mingw 安装了 sfml。

现在,当我尝试将 SMF 库包含到 CMakeLists.txt 中时

cmake_minimum_required(VERSION 3.6)
project(untitled2)
set(CMAKE_CXX_STANDARD 11)

set(SOURCE_FILES main.cpp)
add_executable(untitled2 ${SOURCE_FILES})

set(CMAKE_MODULE_PATH "C:/Program Files (x86)/SFML/cmake/Modules"${CMAKE_MODULE_PATH})

set(SFML_STATIC_LIBRARIES TRUE)
find_package(SFML COMPONENTS graphics window system REQUIRED)
include_directories(${SFML_INCLUDE_DIR})
target_link_libraries(First ${SFML_Libraries})

但是,我遇到了一个错误

CMake Error at C:/Program Files (x86)/SFML/cmake/Modules/FindSFML.cmake:355 (message):
SFML found but some of its dependencies are missing ( FreeType libjpeg)
Call Stack (most recent call first):
CMakeLists.txt:13 (find_package)

但我认为这些库包含在 Windows 中。我做错了什么?如果要下载 FreeType 和 libjpeg 文件,我应该把它们放在哪里?

最佳答案

您不应在 CMakeLists.txt 中设置任何本地系统特定的内容(如路径)。这违背了构建系统的全部目的。

首先,我建议您在项目中创建一个子目录“cmake”,然后将 SFML 的 FindSFML.cmake 模块复制到其中。

然后相应地更新您的CMAKE_MODULE_PATH:

set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake)

这将确保找到模块。始终可以找到 CMake 的默认模块,您不必保留变量的先前值(无论如何通常应该为空)。

接下来,在创建实际项目文件时,您只需将 SFML_ROOT 传递给 CMake,例如:

cmake "-DSFML_ROOT=C:/Program Files (x86)/SFML" path/to/source

以类似的方式,你不应该在你的 CMakeLists.txt 中设置 SFML_STATIC_LIBRARIES 除非你以某种方式被迫使用静态库。所以我实际上也将其添加到命令行:

cmake "-DSFML_ROOT=C:/Program Files (x86)/SFML" -DSFML_STATIC_LIBRARIES=TRUE path/to/source

您只需设置一次,它们稍后会存储在您的 CMakeCache.txt 文件中。

最后但同样重要的是,如果您想支持 SFML 的静态链接,您还必须链接 SFML 的依赖项:

target_link_libraries(First ${SFML_LIBRARIES} ${SFML_DEPENDENCIES})

请注意,所有这些都不会修复您收到的错误消息。由于某些原因,SFML 的预构建依赖项不在 C:\Program Files (x86)\SFML\lib 中。你确定你有正确的预构建包吗?

关于c++ - 缺少 cmake 的 sfml 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42035340/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com