【问题标题】:Multiple SRCDIR folders for compilation using makefile多个 SRCDIR 文件夹,用于使用 makefile 进行编译
【发布时间】:2018-12-06 15:09:05
【问题描述】:

我正在尝试执行以下操作,其中 SRCDIRS 通过在 makefile 中执行以下操作来包含包含源代码的所有文件夹:

SRCDIRS        := $(shell find $(SRCDIR) -type d )


$(OBJDIR)/%.o: $(SRCDIRS)/%.f90 Makefile
       @$(F90) $(FFLAGS) $(POPTIONS) -o $@ $<                      

我的 make 文件似乎忽略了 %.o 规则? 我还有一个已定义的 $(OBJS),其中包括我所有的 %.o 文件

【问题讨论】:

    标签: linux shell makefile compilation gnu-make


    【解决方案1】:

    您不能在 Make 中以这种方式“乘”字符串。即使可以,您也会指定错误的路径。使用vpath:

    vpath %.f90 $(SRCDIRS)
    
    $(OBJDIR)/%.o: %.f90 Makefile
       @$(F90) $(FFLAGS) $(POPTIONS) -o $@ $< 
    

    【讨论】:

    • 所以 vpath 添加了所有包含扩展名 %.f90 的 SRCDIRS?我猜 SRCDIRS 中的某些文件是否包含 .f90 但不包含在 OBJS 变量和依赖项中并不重要,所以它们会在编译时被忽略?
    • @A2LBK:不,您似乎在对 Make 的工作方式存在一些误解。而且我看到自从我发布此答案以来,您已在您的问题中添加了另一个问题。你必须暂时退回到更简单的练习;我建议您从构建所需目标文件的列表开始。 并行您可以尝试使用特定规则构建一个目标文件。一旦这些工作完美,您就可以继续使用模式规则。
    • 只需要vpath,其余的问题基本上是因为我的Makefile依赖项的构建有一些错误。所以 vpath 基本上解决了我的问题!谢谢
    猜你喜欢
    • 1970-01-01
    • 2015-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-16
    • 1970-01-01
    相关资源
    最近更新 更多