我的工作目录如下:
src/my_module/main.c
src/my_module/inc/my_header.h
obj/my_module
main.c
包括my_header.h
。
在我的makefile
中,函数GET_INC
应该基于当前模块返回包含文件。不幸的是,尽管Internet中存在类似的问题描述,但我无法正确处理返回值。
请考虑以下非常简单的示例:
OBJ=obj/my_module/main.o
# The original function is more complicated. In the end it echos a variable with all includes.
GET_INC = $$(X=src/$1/inc; \
echo "$$X";)
prog: $(OBJ)
@echo "$@ built."
# At first, we compute module name (here: my_module), which is then passed to GET_INC.
obj/%.o: src/%.c
@module=$$(echo $* | cut -d'/' -f1); \
INC=$(call GET_INC,$$module); \
$(CC) $< -o $@ $$INC;
不幸的是,即使函数调用起作用,变量INC仍为空。我有以下问题:
GET_INC
的输出存储在变量X
中,然后将其传递给编译器?INC
取决于当前路径,因此我不能在规则之外调用它。有什么建议吗?答案 0 :(得分:0)
您的代码似乎可以正常工作,除了最后一行应该是:
async def create_user(request: Request) -> JSONResponse:
data = await request.json()
query = User.__table__.insert().values(name=data["username"])
await database.execute(query)
# I need the LAST INSERT ID here
出于调试目的,您可以尝试:
$(CC) $< -o $@ -I $$INC;
答案 1 :(得分:0)
(您已经遗漏了一些重要的细节,因此我必须做出一些有根据的猜测。)
如果构建inc
目录路径的函数可以正常工作(看来确实可以),那么您可以使用它所需要的东西(对象路径的一部分?将其命名为{{1}) }),在模块级别计算路径并将其传递给对象规则。
MODULE