我的编译器在搜索目录中的文件时出现问题。我使用的是 Windows 10。
首先,我的文件是这样组织的:
我有 9 个文件 .hpp,它们是:
我有我的 main.cpp,这是一个例子来看看我的 SMFL 是否有效:
#include <Graphics.hpp>
int main(){
sf::RenderWindow window(sf::VideoMode(200, 200), "SFML works!");
sf::CircleShape shape(100.f);
shape.setFillColor(sf::Color::Green);
while (window.isOpen())
{
sf::Event event;
while (window.pollEvent(event))
{
if (event.type == sf::Event::Closed)
window.close();
}
window.clear();
window.draw(shape);
window.display();
}
return 0;
}
问题是我的编译器说:“没有这样的文件或目录”,#include
我尝试通过 VisualStudioCode 找到解决方案,并在每个文件 .hpp 上使用 .json 中的 IncludePaths,但它不起作用。
我还尝试在终端上输入命令: g++ -I/SFML/include main.cpp -o EX 但出现上述错误。
或者: g++ -I/SFML/include/** main.cpp -o EX 但这一次是 #include
我不明白他为什么会犯这个错误,因为我没有包含它......它似乎无法识别我的路径或在 .hpp 之间存在依赖关系。也许解决方案位于目录“lib”内,但我不知道如何指定它或操作它。
我从昨天开始就被屏蔽了,希望你能帮助我。
如果我是你,我就不会费心自己制作 makefile。
相反,我将使用 cmake 生成 makefile 并让他编译我的代码和 SFML。
如果你想这样做,你可以在他们的网站上下载cmake。
然后在您的项目中创建一个名为
的文件在您的 CMakeLists 中使用 c++11 复制并粘贴 sfml 的代码
cmake_minimum_required(VERSION 3.19)
project(ProjectNAME)
# Source files
set(SRC_DIR "${CMAKE_CURRENT_SOURCE_DIR}/source")
set(LIB_DIR "${CMAKE_CURRENT_SOURCE_DIR}/lib")
#All the sources files listed
#List only the cpp file, header are automatically listed
set(SOURCES
"${SRC_DIR}/main.cpp"
)
# Executable definition and properties
add_executable(${PROJECT_NAME} ${SOURCES})
target_include_directories(${PROJECT_NAME} PRIVATE "${SRC_DIR}")
set_property(TARGET ${PROJECT_NAME} PROPERTY CXX_STANDARD 11)
# SFML
set(SFML_DIR "${LIB_DIR}/SFML")
# this line is here to avoid having to move the dll into the build folder
set(BUILD_SHARED_LIBS FALSE)
add_subdirectory("${SFML_DIR}")
target_link_libraries(${PROJECT_NAME} sfml-graphics sfml-audio sfml-system sfml-window sfml-network)
不要忘记将 main.cpp 放在源文件夹中,将 SFML 文件夹放在 Lib 文件夹中。 注意正确命名CMakeLists.txt中的所有文件夹
那么如果你在使用 gcc 或 g++ 的 linux 上:
cmake ..
”make
”./ProjectNAME
”启动您的程序如果您在带有 mingw 的窗口上(不要忘记在路径中添加 mingw):
cmake -G "MinGW Makefiles" -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -B build/Debug -DCMAKE_BUILD_TYPE=Debug
”mingw32-make -j
”ProjectNAME.exe
”启动您的程序一切都应该很容易工作,而无需自己配置 make 文件。 如果您想了解有关 cmake 的更多信息,他们有很棒的文档
现在您只需包含