首页 文章

如果源文件存在,如何从一个目录进行构建,否则从另一个目录构建?

提问于
浏览
5

我正在修改一个包含6000个源文件的巨大递归makefile项目 . 所有这些都是明确控制的 . 由于我不想复制整个源代码树,我正在尝试创建一个仅包含已修改源文件的新项目,因此如果源树在修改后的树中不存在,则从原始树中提取源代码 .

Dir Structure

我已经修改了 ModDir 中的makefile来检查每个文件夹是否存在于本地,如果存在则在该文件夹中执行make . 否则它在 sourceDir 中执行make . 我的问题在于子文件makefile .

每个subdir makefile都包含该模块所需的所有源文件的列表 . 我需要找到一种在本地构建文件的方法,如果它存在,否则从 SourceDir/subdir 构建文件 .

即在我的图像中, Dir1 makefile需要从 ModDir/Dir1/F1 构建 F1 ,并从 SourceDir/Dir1/F2-F3 构建其他文件 .

我试图使用VPATH来告诉make在两个位置找到源文件(当然是第一个_1189820),它工作得非常好 . 但是,由于make假定目标文件位于 ModDir 中,因此无法找到 SourceDir 中内置的任何目标文件 .

我还尝试制作预构建规则来使用bash修改make文件列表,但我不知道是否可能 .

如果源文件存在( ModDir ),如何从一个目录构建make,否则从另一个目录( SourceDir )构建?

1 回答

  • 1

    最简单的方法是将"if ... then ... else"逻辑放在外部bash或批处理中(无论你使用哪种操作系统)脚本并在调用 make 之前交换 makefile

相关问题