c语言 - 如何在大型项目自动通信的子目录中制作Lua?



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

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

与项目的其他部分不同,Lua已经有一个Makefile,我不想将其转换为 Makefile.am 只是为了将其转换回 Makefile.in 然后是Makefile(除非这是唯一的方法)。相反,我想要一些东西来运行 Lua 文件夹和构建的其余部分make以继续设置适当的 env vars(LUA_INCLUDE、LUA_FLAGS、LUA)。我应该向哪些文件(configure.ac 或 Makefile.am)和哪些行添加?

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

相反,我想要一些东西来运行makeLua 文件夹和构建的其余部分以继续执行适当的 env vars (LUA_INCLUDE, LUA_FLAGS, LUA) set.到哪些文件 (configure.ac 或 Makefile.am)我应该添加哪些行?

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

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

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

最新更新