c++ - 使用CMake和GCC(MacOS Sierra)进行编译时找不到SFML header

标签 c++ gcc compiler-errors cmake sfml

我一直在尝试在CMake项目中使用SFML,尤其是 header SFML/Audio.hpp。我使用Homebrew安装了SMFL,并且.dylib文件和 header 都应分别位于/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和源文件,编译对于我的同事来说很好用。

最佳答案

听起来您只是忘了添加SFML的include目录。在Linux上,他们可能会将SFML安装到默认情况下GCC(或Clang)看上去的某个系统路径,因此它们不需要任何其他CMake指令。

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

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

include_directories(${SFML_INCLUDE_DIR})

成功调用SFML_INCLUDE_DIR时,将填充变量find_package(SFML...)

使用它时,您可能还需要确保以正确的顺序链接到正确的库文件:
target_link_libraries(myTargetName ${SFML_LIBRARIES} ${SFML_DEPENDENCIES})

同样,两个变量都将自动填充。

关于c++ - 使用CMake和GCC(MacOS Sierra)进行编译时找不到SFML header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42598544/

相关文章:

c++ - 如何生成事后回溯?

c++ - 澄清使用 CMake 生成 OpenCV 库时的步骤

c++ - 在一行中声明和实现纯虚拟析构函数?

c++ - 在 ELF 文件中找不到 .debug_str?

asp.net - appharbor 在推送后编译时出错

动画示例中的 Java Lang nullpointerException?

c++ - 运行时性能(速度)优化——缓存大小的考虑

c - 使用标志时 Eclipse 无法编译 C 项目

c - 直接使用 ld 链接 C 程序失败, undefined reference `__libc_csu_fini`

c++ - 我有一些错误任何人都可以帮助我