首页 > 解决方案 > Makefile - 使用正则表达式导出

问题描述

我正在研究 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设置正确的路径,以便它始终指向正确的文件夹。

标签: cgithubmakefilegit-submodules

解决方案


您在问什么并不是很清楚(如果您提供了一个显示真实目录名称等的特定示例,那会简单得多)

但我认为,根据您的评论,这样的事情可能会奏效:

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

推荐阅读