g++ -I 和 -L 命令查找 .hpp 文件不工作

g++ -I and -L commands to find .hpp files not working

所以我正在尝试编译一个文件 (main.cpp)

#include <SFML/Graphics.hpp>

我的main.cpp文件在目录中:
~/"Documents/16_Games/01 Tetris/main.cpp"

Graphics.hpp 文件在目录中:
/Users/linsu/Documents/libcpp/SFML-2.5.1-macos-clang/include/SFML

我收到的错误是:

/Users/linsu/Documents/16_Games/01 Tetris/main.cpp:1:10: fatal error: 'SFML/Graphics.hpp' file not found
#include <SFML/Graphics.hpp>
         ^~~~~~~~~~~~~~~~~~~
1 error generated.

我试过的一些命令包括:​​

g++ -I /Users/linsu/Documents/libcpp/SFML-2.5.1-macos-clang/include/SFML ~/"Documents/16_Games/01 Tetris/main.cpp"

g++ -I/Users/linsu/Documents/libcpp/SFML-2.5.1-macos-clang/include/SFML ~/"Documents/16_Games/01 Tetris/main.cpp"

g++ -L /Users/linsu/Documents/libcpp/SFML-2.5.1-macos-clang/include/SFML ~/"Documents/16_Games/01 Tetris/main.cpp"

g++ -L/Users/linsu/Documents/libcpp/SFML-2.5.1-macos-clang/include/SFML ~/"Documents/16_Games/01 Tetris/main.cpp"

g++ -L/Users/linsu/Documents/libcpp/SFML-2.5.1-macos-clang/include/SFML -I/Users/linsu/Documents/libcpp/SFML-2.5.1-macos-clang/include/SFML ~/"Documents/16_Games/01 Tetris/main.cpp"

g++ -L /Users/linsu/Documents/libcpp/SFML-2.5.1-macos-clang/include/SFML -I /Users/linsu/Documents/libcpp/SFML-2.5.1-macos-clang/include/SFML ~/"Documents/16_Games/01 Tetris/main.cpp"

他们都抛出同样的错误;我觉得很蠢。我错过了什么吗?

编译器只会搜索您提供的确切路径,而不是整个子目录链。它将您提供的名称 (SFML/Graphics.hpp) 附加到它可以查找的所有路径。

它在所有系统 header 位置、当前目录 (./SFML/Graphics.hpp) 中查找 -I 提供的路径和程序员提供的文件名的串联:

/Users/linsu/Documents/libcpp/SFML-2.5.1-macos-clang/include/SFML/SFML/Graphics.hpp

由于这些位置中的 none 个包含此类文件,因此编译失败。


你想要:

g++ -I/Users/linsu/Documents/libcpp/SFML-2.5.1-macos-clang/include ~/"Documents/16_Games/01 Tetris/main.cpp"

请注意 SFML 目录不在 -I 选项中,因为它已在您的代码中提供。