我一直在尝试在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/