【问题标题】:SFML libraries not found未找到 SFML 库
【发布时间】:2018-03-09 19:53:04
【问题描述】:

我正在尝试使用 CMake 将 SFML 链接到 C++ 项目。这个设置在我的 Linux 机器上运行良好,但是当我尝试在我的 mac 上构建时,它找不到库:ld: library not found for -lsfml-network。我对 SFML 的安装在两台机器上完全相同(以我的方式)。

我的 CMakeLists.txt 链接如下所示:

target_link_libraries( Playground ${OpenCV_LIBS} sfml-network sfml-window sfml-graphics sfml-system )

【问题讨论】:

  • 如果没有cmake,你可以让它工作吗?然后你至少可以排除它的影响并相应地减少你的问题。这遵循提取 MCVE 的规则,您应该从好问题指南中了解这一点。
  • 嗯,没试过。它通过正常链接工作,但不能通过 CMake,这是为什么呢?
  • 在 cmake 之后运行 make VERBOSE=1 以查看 cmake 为编译器提供的确切标志。这样可以更轻松地诊断问题

标签: c++ cmake linker-errors


【解决方案1】:

SFML 在how to compile using CMake 上有一个教程。它提供了一个FindSFML.cmake 文件,因此您可以简单地使用find_packagetarget_link_libraries

find_package(SFML REQUIRED COMPONENTS network window graphics system)
# ...

target_link_libraries(Playground
  ${SFML_LIBRARIES}

# If SFML did it correctly, this shouldn't be needed, but I can't tell from the
# documentation if they did:
  ${SFML_DEPENDENCIES}
)

【讨论】:

  • FindSFML.cmake 文件最近已被删除(尽管它可以在以前版本的源代码库中找到),而此时的教程似乎没有更新。似乎最近对 CMake 系统进行了一些结构性更改,我希望尽快找到有关它的更新文档。
  • 更新:FindSFML.cmake 已替换为 SFMLConfig.cmake,如 this pull request 中所述。用法类似,稍微简单一些。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-09-27
  • 2015-10-19
  • 2017-11-18
  • 2016-06-26
  • 2019-09-22
  • 2013-09-09
  • 2019-04-06
相关资源
最近更新 更多