g++ -I 和 -L 命令来查找不起作用的 .hpp 文件

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

本文关键字:不起作用 hpp 文件 查找 命令 g++      更新时间:2023-10-16

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

#include <SFML/Graphics.hpp>

我的主.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(附加到它可以查找的所有路径中。

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

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

由于这些位置都不包含此类文件,因此编译器将失败。


你想要:

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

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