Удаление предварительной настройки, когда совместимый набор инструментов не используется - PullRequest
1 голос
/ 16 мая 2019

Я использую premake5 в качестве генератора проекта.Я использую его для создания make-файла или Visual Studio, где это необходимо (Linux и Windows соответственно).Я хочу иметь конфигурацию SAN (Adress / Undefined-Behavior SANitizer) только при использовании gcc или clang (другой набор инструментов не поддерживает) для моего проекта C ++.К сожалению, я не установил его успешно.

Я использую premake5 Alpha13.Я пробовал все виды комбинаций not, or и and внутри фильтра:

workspace "MyWorkspace"

configurations { "Debug", "DebugSAN", "Release" }

filter "toolset:not(gcc or clang)"
    removeconfigurations "*SAN"

filter { "configurations:*SAN", "toolset:gcc or clang" }
    buildoptions { "-fno-omit-frame-pointer" }
    buildoptions { "-fsanitize=undefined,address" }
    linkoptions { "-fsanitize=undefined,address" }

Пробовал "toolset:not gcc and not clang", {"toolset:not gcc", "toolset:not clang"} ...

Я долженв итоге получим 3 конфигурации при генерации в Linux с GCC по умолчанию и только 2 при форсировании toolset "msc" в premake5.lua.Но я продолжаю получать один и тот же make-файл в двух случаях.

$ make help
Usage: make [config=name] [target]

CONFIGURATIONS:
  debug
  debugsan <- Showing-up when it wants
  release

1 Ответ

1 голос
/ 05 июля 2019

Похоже, что команда удаления применяется к "проектным конфигурациям"

https://github.com/premake/premake-core/wiki/Removing-Values

, поэтому что-то вроде этого работает

project "Test"
    kind "StaticLib"

filter {"toolset: not gcc or toolset: not clang"}
  removeconfigurations "*SAN"

У вас не будет* Сан конфиг в этом проекте.Но я не думаю, что есть способ удалить его из "рабочей области", также как и ваш файл make.

...