У меня есть проект, который примерно структурирован как:
main.c
premake5.lua
moduleA/
premake5.lua
include/modulea.h
src/modulea.c
moduleB/
premake5.lua
include/moduleb.h
src/moduleb.c
Мой верхний уровень premake5.lua
довольно прост:
workspace "myproject"
configurations { "Debug", "Release" }
include "moduleA"
include "moduleB"
project "myproject"
kind "ConsoleApp"
language "C"
files { "main.c" }
includedirs { "." }
links { "moduleA" , "moduleB" }
Я хотел бы иметь возможность выразить свои модули'конфигурация / зависимости без соглашений о жестком кодировании, используемых в содержащем проекте.Модули A и B будут повторно использоваться в других проектах, поэтому я хочу избежать необходимости:
project "moduleA"
kind "StaticLib"
-- files, etc
include { "..", "../moduleB/include" }
links { "moduleB" }
Строки включения, содержащие ..
, делают предположения о структуре родительского проекта, которые могут не всегда выполняться.
Есть ли какой-нибудь способ для сценария Premake более высокого уровня, чтобы "сказать" этим подпроектам "вот база для включенных / sysincludedirs"?Даже если это включает в себя написание этих зависимых проектов другим способом, чтобы принять эту информацию?
Например (и позвольте мне подчеркнуть, что я недостаточно знаю Lua или Premake, чтобы понять, насколько это имеет смысл), мои модулиможет сказать «убедитесь, что вы установили MODULE_INCLUDE_BASE
и MODULE_SYS_INCLUDE_BASE
», а затем используете:
project "moduleA"
-- etc
include { "%{MODULE_INCLUDE_BASE}/moduleB/include" }
Проекты, зависящие от более высокого уровня, могут затем ... установить? ... эти переменные перед включением конфигов зависимостей,(Опять же, это всего лишь пример, может быть, есть более элегантный способ сделать это.)