Проект SharedLib не устанавливает UseDebugLibraries=true в режиме отладки

Я использую premake5 alpha 6 в Windows.

Проблема возникла, когда я обнаружил, что для параметров «Библиотека времени выполнения» моего проекта Visual Studio было установлено значение «Многопоточная DLL/MD» в режиме отладки вместо «Многопоточная отладочная DLL» (/MDd).

В ходе расследования я обнаружил, что для конфигурации отладки файла проекта было установлено значение UseDebugLibraries = false. Если я вручную установил для этого параметра значение true в моем файле проекта, параметр «Библиотека времени выполнения» конфигурации отладки правильно отображается как /MDd.

Как установить для 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" }

person ccptleu    schedule 08.12.2015    source источник


Ответы (1)


Я думаю, вы ищете функцию optimize:

  • «Вкл.», «Размер», «Скорость» и «Полный» дают <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.

person Amro    schedule 23.02.2016
comment
Спасибо, это именно то, что я хочу! Я знал о статусе оптимизации «Вкл.», но не знал, что для отладки нужно установить «Выкл.»! - person ccptleu; 24.02.2016