0

我在 Windows 上使用 premake5 alpha 6。

当我发现我的 Visual Studio 项目的“运行时库”设置在调试模式下设置为多线程 DLL /MD,而不是多线程调试 DLL (/MDd) 时,问题就出现了。

经查,发现项目文件Debug配置设置为UseDebugLibraries=false。如果我在我的项目文件中手动将其设置为 true,则调试配置“运行时库”设置正确显示为 /MDd。

如何在 premake 脚本的调试模式下将 UseDebugLibraries 设置为 true?我正在做类似下面的事情。请注意,该项目是“SharedLib”,我发现如果类型是“StaticLib”,则运行时库设置 /MDd 可以正常工作。

project "Project"
    location "../src" 
    filename "Project_%{_ACTION or ''}" 
    kind "SharedLib"
    language "C++"                  
    pchheader "stdafx.h" 
    pchsource "../src/Project/stdafx.cpp"  

    includedirs {   
        "../include",
        "../src/Project",
    }       
    files { 
       "../src/Project/**.cpp",                    
       "../src/Project/**.h",
       "../src/Project/Project.rc"
    }      

    configuration "vs*"
        objdir "../src/Project/$(PlatformToolset)"

    configuration { "x64", "Debug" }
      defines { "_DEBUG" }
      flags { "Symbols" }

    configuration { "x64", "Release" }
      defines { "NDEBUG" }    

    configuration { "x86", "Debug" }
      defines { "_DEBUG" }
      flags { "Symbols" }     

    configuration { "x86", "Release" }
      defines { "NDEBUG" }
4

1 回答 1

0

我认为您正在寻找优化功能:

  • “On”、“Size”、“Speed”和“Full”产生<UseDebugLibraries>false</UseDebugLibraries>
  • “关闭”和“调试”产生<UseDebugLibraries>true</UseDebugLibraries>

所以你可以写这样的东西:

workspace "MySolution"
    configurations {"Debug", "Release"}

    filter "configurations:Debug"
        flags {"Symbols"}
        optimize "Off"
        defines {"DEBUG", "_DEBUG"}

    filter "configurations:Release"
        optimize "On"
        defines {"NDEBUG"}

以上使用premake 5.x中的新过滤系统

于 2016-02-23T14:43:45.697 回答