包含来自不同项目的标头时无法打开源文件 SFML/Graphics.hpp

问题描述 投票:0回答:1

整个项目就是一个游戏引擎。然而,对于这方面,我尝试添加一个使用 SFML 来显示图形的开发工具。我已成功链接 SFML 以使其自行运行。当我尝试将工具中的标头 #include 到解决方案中的另一个项目时,就会出现问题。我收到一条错误消息,指出无法找到 SFML 库中的graphics.hpp。 我正在使用 premake5.lua 文件静态链接 SFML。

任何帮助将不胜感激。

这是预制版的代码段。如果我尝试将 SFML 包含到沙箱项目中,则无法构建 .bat 文件。

project "Sandbox"
location "sandbox"
kind "ConsoleApp"
language "C++"
staticruntime "off"

targetdir ("bin/" .. outputdir .. "/%{prj.name}")
objdir ("build/" .. outputdir .. "/%{prj.name}")

files {
    "%{prj.name}/include/**.h",
    "%{prj.name}/src/**.cpp",
    "vendor/stb_image/stb_image.cpp"
}

includedirs {
    "%{prj.name}/include",
    "engine/enginecode/",
    "engine/enginecode/include/independent",
    "engine/precompiled/",
    "vendor/glm/",
    "vendor/spdlog/include",
    "vendor/json/single_include/nlohmann",
    "vendor/IMAT3904/include",
    "vendor/IMAT3904/include/include/independent",
    "vendor/React3D/src"
    "vendor/SFML-2.5.1/lib"
}

links {
    "Engine",
    "React3D",
}

filter "system:windows"
    cppdialect "C++17"
    systemversion "latest"

    defines {
        "NG_PLATFORM_WINDOWS"
    }

filter "configurations:Debug"
    defines {
        "NG_DEBUG"
        "SFML_STATIC"
    }
    runtime "Debug"
    symbols "On"

    libdirs {
        "vendor/SFML-2.5.1/lib"
    }

    links {
        "sfml-main",
        "sfml-graphics-s-d",
        "sfml-system-s-d",
        "sfml-window-s-d",
        "sfml-audio-s-d",
        "opengl32.lib",
        "winmm.lib",
        "gdi32.lib",
        "openal32.lib",
        "flac.lib",
        "vorbisenc.lib",
        "vorbisfile.lib",
        "vorbis.lib",
        "ogg.lib",
        "freetype.lib"
    }

    debugenvs {"PATH=$PATH;../vendor/SFML-2.5.1/bin;"}

filter "configurations:Release"
    defines {
        "NG_RELEASE"
        "SFML_STATIC"
    }
    runtime "Release"
    optimize "On"

    libdirs {
        "vendor/SFML-2.5.1/lib"
    }

    links {
        "sfml-main",
        "sfml-graphics-s",
        "sfml-system-s",
        "sfml-window-s",
        "sfml-audio-s",
        "opengl32.lib",
        "winmm.lib",
        "gdi32.lib",
        "openal32.lib",
        "flac.lib",
        "vorbisenc.lib",
        "vorbisfile.lib",
        "vorbis.lib",
        "ogg.lib",
        "freetype.lib"
    }

    debugenvs {"PATH=$PATH;../vendor/SFML-2.5.1/bin;"}

项目“分析工具” 位置“分析工具” 种类“ConsoleApp” 语言“C++” 静态运行时“关闭”

targetdir ("bin/" .. outputdir .. "/%{prj.name}")
objdir ("build/" .. outputdir .. "/%{prj.name}")

files {
        "%{prj.name}/include/**.h",
        "%{prj.name}/src/**.cpp"
}

includedirs {
    "%{prj.name}/include",
    "vendor/spdlog/include",
    "vendor/stb_image",
    "vendor/freetype2/include",
    "vendor/glm/",
    "vendor/assimp/include",
    "vendor/Glad/include",
    "vendor/glfw/include",
    "vendor/json/single_include/nlohmann",
    "vendor/IMAT3904/include",
    "vendor/SFML-2.5.1/include"
}   

filter "system:windows"
    cppdialect "C++17"
    systemversion "latest"

filter "configurations:Debug"
    runtime "Debug"
    symbols "On"
    defines "SFML_STATIC"

    libdirs {
        "vendor/SFML-2.5.1/lib"
    }

    links {
        "sfml-main",
        "sfml-graphics-s-d",
        "sfml-system-s-d",
        "sfml-window-s-d",
        "sfml-audio-s-d",
        "opengl32.lib",
        "winmm.lib",
        "gdi32.lib",
        "openal32.lib",
        "flac.lib",
        "vorbisenc.lib",
        "vorbisfile.lib",
        "vorbis.lib",
        "ogg.lib",
        "freetype.lib"
    }   

    debugenvs {"PATH=$PATH;../vendor/SFML-2.5.1/bin;"}

filter "configurations:Release"
    runtime "Release"
    optimize "On"
    defines "SFML_STATIC"

    libdirs {
        "vendor/SFML-2.5.1/lib"
    }

    links {
        "sfml-main",
        "sfml-graphics-s",
        "sfml-system-s",
        "sfml-window-s",
        "sfml-audio-s",
        "opengl32.lib",
        "winmm.lib",
        "gdi32.lib",
        "openal32.lib",
        "flac.lib",
        "vorbisenc.lib",
        "vorbisfile.lib",
        "vorbis.lib",
        "ogg.lib",
        "freetype.lib"
    }

    debugenvs {"PATH=$PATH;../vendor/SFML-2.5.1/bin;"}      

它确实包含用于分析工具的 SFML,但不包含用于沙箱项目的 SFML。

c++ lua sfml premake
1个回答
0
投票

在您的沙箱中,您将其包含为:

"vendor/SFML-2.5.1/lib"
,可能应该是:
"vendor/SFML-2.5.1/include"

© www.soinside.com 2019 - 2024. All rights reserved.