我们在项目中使用递归make。我们还使用具有FlexLM许可证的商业嵌入式编译器(diab)。
我们目前正在添加许可借用作为每个目录中顶级目标的依赖。
像这样:
.PHONY: target
target: borrow_compiler $(TARGETLIB)
$(RETURN_COMPILER)
.PHONY : borrow_compiler
borrow_compiler:
@$(BORROW_COMPILER) 300
其中BORROW_COMPILER
和RETURN_COMPILER
是获取许可证的脚本。
我们的问题是,由于与每个递归子目录的许可证服务器通信,在一次小的更改后构建需要很长时间。
有更好的方法吗?
答案 0 :(得分:1)
解决方案是看MAKELEVEL。现在许可证只是在顶级品牌中借用。所有级别的makefile都包含此内容:
ifeq ($(MAKELEVEL),0)
BORROW_COMPILER = python $(relativeToolPath)scripts/borrowCompilerLicence.py
RETURN_COMPILER = python $(relativeToolPath)scripts/returnCompilerLicence.py
else
# true does nothing
BORROW_COMPILER = true
RETURN_COMPILER =
endif
答案 1 :(得分:0)
如何在makefile中执行,而不是在makefile中编写make程序包装器,然后使用参数调用make,并在make返回后返回许可证?如果要强制使用make包装器,可以在makefile中检查是否设置了一些特殊的环境变量。