首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Premake可以将includedirs目录传播到依赖项目吗?

Premake可以将includedirs目录传播到依赖项目吗?
EN

Stack Overflow用户
提问于 2019-02-01 12:30:33
回答 2查看 773关注 0票数 1

我有一个项目,它的结构大致如下:

代码语言:javascript
复制
main.c
premake5.lua

moduleA/
  premake5.lua
  include/modulea.h
  src/modulea.c

moduleB/
  premake5.lua
  include/moduleb.h
  src/moduleb.c

我的顶级premake5.lua相当简单:

代码语言:javascript
复制
workspace "myproject"
    configurations { "Debug", "Release" }

    include "moduleA"
    include "moduleB"

    project "myproject"
        kind "ConsoleApp"
        language "C"

        files { "main.c" }
        includedirs { "." }

        links { "moduleA" , "moduleB" }

我希望能够表达模块的配置/依赖关系,而不需要在包含项目中使用硬编码约定。模块A和B将在其他项目中重用,因此我希望避免必须做的事情:

代码语言:javascript
复制
project "moduleA"
  kind "StaticLib"
  -- files, etc
  include { "..", "../moduleB/include" }
  links { "moduleB" }

包含..的include行对可能并不总是成立的父项目结构进行假设。

有没有办法让更高级别的Premake脚本“告诉”这些子项目“这里是includedirs/sysincludedirs的基础”?即使它涉及到以不同的方式编写这些依赖项目来接受该信息?

例如(我要强调的是,我对Lua或Premake了解的还不够多,不知道这有多大意义),我的模块可能会说“确保设置了MODULE_INCLUDE_BASEMODULE_SYS_INCLUDE_BASE”,然后使用:

代码语言:javascript
复制
project "moduleA"
  -- etc
  include { "%{MODULE_INCLUDE_BASE}/moduleB/include" }

然后,更高级别的依赖项目可以...准备好了吗?...在包含依赖项配置之前,请使用这些变量。(再说一次,这只是一个例子,也许有一种更优雅的方法。)

EN

回答 2

Stack Overflow用户

发布于 2019-02-02 04:12:46

一种选择是通过将项目调用包装在函数本身中来推迟计算:

代码语言:javascript
复制
function project_A()
    project "moduleA"
        kind "StaticLib"
        language "C"
        files { "moduleA/src/*.c" }
        includedirs { '.' }
end

当从顶层premake5.lua调用时,将在顶层脚本的上下文中计算'.'

代码语言:javascript
复制
workspace "myproject"
    configurations { "Debug", "Release" }

    include "moduleA"
    include "moduleB"

    module_process()
    module_protocol()

    -- ...

然后,相对于这个顶层脚本来完成包含。

票数 0
EN

Stack Overflow用户

发布于 2019-03-25 00:17:14

我建议检查导出模块中的premake https://github.com/Meoo/premake-export

项目可以定义需要导出到其他库或应用程序的内容。反过来,其他库可以导入它们所依赖的项目,这非常方便,语法也非常有表现力!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54472922

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档