繁体   English   中英

如何在较大项目 autoconf 的子目录中制作 Lua?

[英]How to Make Lua in subdirectory of a larger project autoconf?

我有一个想要与 Lua 集成的 C 项目。

这个项目必须在多个平台上构建,所以我想用其余的 C 代码构建 Lua in-tree,而不是依赖于系统的 Lua 安装。 以前,我们使用ax_lua宏来配置系统的 Lua 依赖项,但我想将其删除并使用其余部分构建 Lua。

与项目的其他部分不同,Lua已经有一个 Makefile,我不想将它转换为 Makefile.am 只是为了将它转换回 Makefile.in 然后再转换为 Makefile(除非,这是唯一的方法。)而是,我想要在 Lua 文件夹中运行make的效果,并且构建的其余部分继续使用适当的环境变量(LUA_INCLUDE,LUA_FLAGS,LUA)集。 我应该添加到哪些文件(configure.ac 或 Makefile.am)以及哪些行?

project/
  lua-5.3.6/
    Makefile
  src/
    a.c
    b.c
  configure.ac
  Makefile.am
  ...

相反,我想要在 Lua 文件夹中运行make的效果,并且构建的其余部分继续使用适当的环境变量(LUA_INCLUDE、LUA_FLAGS、LUA)集。 我应该添加到哪些文件(configure.ac 或 Makefile.am)以及哪些行?

除非你愿意手动完成,否则在配置项目之前尝试构建 Lua 不太合适。 此外,即使您确实提前手动构建了 Lua,除非您也将其安装到构建系统中,否则假设来自 ax_lua 的宏可以按预期工作也是非常乐观的。

但是,如果您满足于在整个项目构建期间通过递归make构建 Lua,那么您正在寻找的是 Automake 的SUBDIRS变量。 正如其文档所描述的,要构建的子目录不必是基于 Automake 的。 他们只需要有生成文件(配置后)。 该文档还列出了顶级 makefile 可能尝试在子目录中构建的目标,但如果子目录 makefile 不支持所有这些,则它不一定是一个showstopper。 您可以将其添加到Makefile.am

SUBDIRS = lua-5.3.6

环境变量是一个不同的问题,其答案部分取决于项目如何依赖它们。 也许你可以在你的Makefile.am设置你需要的(作为make变量)。 由于您正在控制 Lua 构建,因此您可以提前确定所需的值。 Makefile.am所有内容都被复制到配置的Makefile ,因此您无需执行更多操作即可将这些变量设置为最终的make

例如,沿着这些路线的东西可能就足够了:

LUA_INCLUDE = -I$(srcdir)/lua-5.3.6
LUA_LIB = lua-5.3.6/liblua-5.3.6.a

您也可以考虑转储变量,转而仅对值进行硬编码,毕竟这些值将不再变化。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM