Makefile - 使用正则表达式

时间:2018-05-15 15:11:52

标签: c github makefile git-submodules

我正在研究C项目XYZ。该项目依赖于另一个C项目ABC。因此,为了制作XYZ,我们必须首先制作ABC。为此,我首先将ABC作为子模块添加到XYZ,如下所示

git submodule add git@github.com:username/ABC.git  
git add .gitmodules  
git add ABC  
git push

因此,为了构建我的XYZ项目,需要首先构建ABC。所以我在XYZ项目中的makefile如下所示:

ifndef PRT  
PRT=ABC  
export PRT  
endif

.PHONY: project_ project_clean project_check clean XYZ_package package check

project_ project_clean project_check:  
        @echo "(MAKE) -C src -s $(@:project_%=%)"  
        @$(MAKE) -C src -s $(@:project_%=%)  

clean: project_clean

XYZ_package package:  
        ./scripts/package.sh
check: project_check

这在本地工作,但是当我尝试在github中构建它时,它失败。因为在github中,文件夹是XYZ @ 324354。它显示如下错误:

(MAKE) -C src -s   
make: *** ABC: No such file or directory.  Stop.  
make[1]: *** [all] Error 2  
make: *** [project_] Error 2  

如何使PRT variable设置为更正路径,以便始终指向正确的文件夹。

1 个答案:

答案 0 :(得分:0)

你所要求的并不是很清楚(如果你提供一个显示真实目录名称等的具体例子,会更简单。)

但我认为,基于你的评论,这样的事情可能有效:

ifndef PRT
PRT := $(wildcard sub-project*)
endif
export PRT