【问题标题】:SFML headers not found when compiling using CMake and GCC (MacOS Sierra)使用 CMake 和 GCC (MacOS Sierra) 编译时找不到 SFML 标头
【发布时间】:2017-03-04 16:44:56
【问题描述】:

我一直在尝试在 CMake 项目中使用 SFML,特别是标题 SFML/Audio.hpp。我使用 Homebrew 安装了 SMFL,.dylib 文件和标头都应该正确定位,分别位于 /usr/local/lib 和 /usr/local/include 中。

现在运行 CMake 工作正常,告诉我它有 Found SFML 2.4.2 in /usr/local/include

但是,在编译项目时(使用make),我收到以下错误:

/path/to/project.hpp:12:10: fatal error: 'SFML/Audio.hpp' file not found.

有人知道为什么会这样吗?

注意:我的同事在各种 Linux 操作系统上使用相同的 CMake 和源文件进行编译工作正常。

【问题讨论】:

    标签: c++ gcc compiler-errors cmake sfml


    【解决方案1】:

    这听起来就像您只是忘记添加 SFML 的包含目录。在 Linux 上,他们可能会将 SFML 安装到默认显示 GCC(或 Clang)的某个系统路径,因此他们不需要任何额外的 CMake 指令。

    幸运的是,解决这个问题非常简单。

    在定义目标之前,将以下行添加到您的 CMakeLists.txt 中:

    include_directories(${SFML_INCLUDE_DIR})
    

    当您成功调用find_package(SFML...) 时,变量SFML_INCLUDE_DIR 被填充。

    当您使用它时,您可能还希望确保以正确的顺序链接到正确的库文件:

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

    同样,这两个变量都是自动填充的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-08
      • 2018-10-19
      • 2021-11-14
      • 1970-01-01
      • 2018-03-05
      • 2017-02-26
      • 2013-05-25
      • 2021-04-09
      相关资源
      最近更新 更多