在Makefile中加入 "ifeq",对特定文件进行测试。

问题描述 投票:1回答:1

我试图为我的Makefile中的一个特定文件设置一个if测试,以便用不同的标志来编译它。

.f90.o:
ifeq ($<,main.f90)
    @echo ok $< 
    $(F90) -c $< -o $@
else
    @echo nope $<
    $(F90) $(F90FLAGS) $(DEBUG) $(INCL) -c $< -o $@
endif

...尽管我做了很多努力,但我只得到..:

nope main.f90
mpif90 -O2 -g -fbacktrace -fPIC   -c main.f90 -o main.o
makefile gnu-make
1个回答
0
投票

你使用的ifeq条件是在解析时由Make处理的,而不是在执行配方时。当你的脚本被解析时,宏$< 是空的,所以你的配方只包含后两行。

一个解决方案是提供两个配方,一个用于你的特殊情况,然后一个模式配方用于其余的情况。

main.o:main.f90
    $(F90) -c $< -o $@

.f90.o:
    $(F90) $(F90FLAGS) $(DEBUG) $(INCL) -c $< -o $@
© www.soinside.com 2019 - 2024. All rights reserved.