【问题标题】:Building project with Premake5 doesn't generate executables or intermediates使用 Premake5 构建项目不会生成可执行文件或中间体
【发布时间】:2019-12-22 17:27:41
【问题描述】:

我最近观看了this 视频,并决定在我的项目中包含一个预制构建步骤。但是,在我的 .lua 文件中看似相同地实现代码之后(除了名称),premake 不会生成 bin 和 bin-int 目录。奇怪的是.sln、.vcxproj和.vcxproj.filters文件都生成了。

我的 premake5.lua 文件:

workspace "OpenGE"
    architecture "x64"
    startproject "Sandbox"

    configurations
    {
        "Debug",
        "Release",
        "Dist"
    }

outputdir = "%{cfg.buildcfg}-%{cfg.system}-%{cfg.architecture}"

project "OpenGE"
    location "OpenGE"

    kind "SharedLib"
    language "C++"

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

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

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

        defines
        {
            "GE_DLL_BUILD"
        }

        postbuildcommands
        {
            "{COPY} %{cfg.buildtarget.relpath} ../bin/" .. outputdir .. "/Sandbox"
        }

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

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

    filter "configurations:Dist"
        defines "GE_DIST"
        runtime "Release"
        optimize "On"

project "Sandbox"
    location "Sandbox"

    kind "ConsoleApp"
    language "C++"

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

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

    includedirs
    {
        "OpenGE/src"
    }

    links
    {
        "OpenGE"
    }

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

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

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

    filter "configurations:Dist"
        defines "GE_DIST"
        runtime "Release"
        optimize "On"

运行 premake 在命令行上的输出看起来不错:

C:\Users\bonnl\source\repos\OpenGE>call dependencies\premake\premake5 vs2019
Building configurations...
Running action 'vs2019'...
Done (92ms).

C:\Users\bonnl\source\repos\OpenGE>PAUSE
Press any key to continue . . .

如果需要任何其他代码或信息,我很乐意添加。

【问题讨论】:

  • “premake 不会生成 bin 和 bin-int 目录”。解决方案中的 obj dir 和 target dir 是否指向这些目录?在构建期间创建目录将是可视的。
  • 作为剩余部分,premake 不会构建解决方案。
  • 真的吗?我想我假设是因为它被称为构建工具:)
  • 它创建独立的(与 CMake 相反)你以后正常使用的 makefile/解决方案。
  • 是的,我回想起来就意识到了这一点。谢谢

标签: c++ lua premake


【解决方案1】:

原来我认为 premake 将构建我的项目以及生成解决方案和项目文件。我已经建立了这个项目,它就像一个魅力

【讨论】:

    猜你喜欢
    • 2014-02-13
    • 1970-01-01
    • 1970-01-01
    • 2021-02-08
    • 2021-04-16
    • 1970-01-01
    • 1970-01-01
    • 2019-01-18
    • 1970-01-01
    相关资源
    最近更新 更多