2016-11-18 5 views
0

У меня есть проект, содержащий файл с высокой критичностью, и сделать отладку остальной программы выполнимой, ее нужно скомпилировать, по крайней мере, с некоторыми оптимизациями, в частности встраивание. Раньше я делал это вручную в VS2010, но теперь я хотел бы добиться того же в проектах VS2015, созданных premake5.Оптимизация одного файла в VS-образном решении, создаваемом прематом

Я понимаю, что я должен иметь configuration блок для этого файла несколько вида:

filter { "configurations:Debug*" } 
    configuration "critical_file.cpp" 
    -- Optimization settings go here 
    configuration {} 
filter {} 

Я пробовал различные вещи: optimize "Speed" или optimize "Full" не работает, потому что VS2015 предполагает /RTC1, который несовместима с /O2 или /O4:

7>cl : Command line error D8016: '/Ox' and '/RTC1' command-line options are incompatible 

Добавление flags { "NoRuntimeChecks" } в этом блоке не имеет значения.

Я также попытался добавить inlining "auto" вместо того, чтобы хотя бы включить функцию вложения, но это не создало никакой конкретной конфигурации для этого файла.

Я думаю, что я хочу, в конце концов, выглядит примерно так:

<ClCompile Include="critical_file.cpp"> 
    <Optimization Condition="'$(Configuration)'=='Debug'">Full</Optimization> 
    <BasicRuntimeChecks Condition="'$(Configuration)'=='Debug'"></BasicRuntimeChecks> 
</ClCompile> 

Возможно ли это с premake вообще, или это должно быть исправлено автоматически отключать основные проверки времени выполнения для любой конфигурации или файлы с оптимизацией?

ответ

0

Если я правильно понимаю, я думаю, вы могли бы искать что-то вроде этого:

project "MyProject" 
    flags "NoRuntimeChecks" 

    filter { "files:critical_file.cpp" } 
     optimize "Speed" 

Если вы хотите, чтобы оптимизировать отладку и выпустить версии отдельно, это будет выглядеть так:

project "MyProject" 
    flags "NoRuntimeChecks" 

    filter { "configurations:Debug", "files:critical_file.cpp" } 
     optimize "Speed" 

    filter { "configurations:Release", "files:critical_file.cpp" } 
     optimize "Full" 

Надеюсь, что это поможет!

+0

К сожалению, это не похоже на то, что мне нужно, так как я не хочу отказываться от вспомогательных помощников Visual Studio в режиме отладки и фактически проверять проверки выполнения во время проекта, но отключить их для этого конкретного файла , То, что я хочу достичь **, возможно ** с созданным вручную файлом проекта VS, как показано в последнем примере в моем первоначальном сообщении. Построение файла будет выдавать предупреждение, но фактически оптимизирует этот единственный файл. Я думаю, что основная проблема заключается в том, что добавление '' 'flags {" NoRuntimeChecks "}' '' в блоке фильтра для одного файла не создает проект, как в моем примере. –