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
选项中,因为它已在您的代码中提供。
所以我正在尝试编译一个文件 (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
选项中,因为它已在您的代码中提供。