如何创建支持内部依赖的NASM库单体仓库?
NASM通用库单体仓库搭建疑问
我在开发NASM项目时,意识到将argparser这类通用功能代码抽离为外部库更合理。现有代码结构如下:
argparser.inc
extern argparse struc command .arg_count: resq 1 .name: resq 1 .fn: resq 1 endstruc
argparser.asm
%include "argparser.inc" %include "linux.inc" %include "string.inc" section .text ;; ; Parse arguments, if it does not match exits. ; @param RDI - argc ; @param RSI - argv ; @param RDX - commands ; @param RCX - commands_help ; @return RAX - pointer to the command struct ;; argparse: global argparse:function ...
当前我通过%include "argparser.inc"在其他文件中引入该模块。这类代码属于通用依赖而非项目专属,最初计划为argparser单独建仓,通过git子模块引入到项目的/myproject/libs/argparse/目录,修改引入路径和Makefile即可。但考虑到还有string.asm/string.inc等其他通用功能,打算将所有NASM库整合为一个单体仓库,方便后续项目复用。
但随即遇到问题:单体仓库内的库存在相互依赖(比如argparser依赖string库)。如果回到单库单仓加子模块的方式,会出现嵌套依赖结构:
. └── myproject/ ├── arun ├── ... └── libs/ └── argparser/ └── libs/ └── string
这种结构类似npm的node_modules,可能陷入“依赖地狱”。请问是否可以搭建如下结构的NASM库单体仓库,既支持库间内部依赖,又能通过git子模块引入目标库及其依赖(类似高级语言包管理器的功能):
. └── lib-monorepo/ ├── argparser/ │ ├── argparser.inc │ ├── argparser.asm │ ├── Makefile │ └── README.md ├── string/ │ └── ... └── ...
内容的提问来源于stack exchange,提问作者itasahobby
相关产品推荐
相关产品推荐

