linux makefile 帮助声明基于 make gnu 或 make linux 规则的 FC FFLAGS 变量

标签 linux variables makefile

我正在尝试修改我的 Makefile 以便我可以输入任何一个

“制作 gnu”或“制作英特尔”

它会编译一切,唯一的区别是

FC = gfortran-4.8 或 ifort, 和 FFLAGS = gfortran 或 ifort 的适当标志。

有人可以帮我解决目前的问题吗?

SOURCES = a1.f a2.f a3.f
OBJECTS = $(SOURCES:.f=.o)
TARGET = myexececutable.x

gnu: GNU_FC $(TARGET)

intel: INTEL_FC $(TARGET)

GNU_FC:
    FC = gfortran-4.8
    FFLAGS = -O3 -mcmodel=medium -shared

INTEL_FC:
    FC = ifort
    FFLAGS = -O3 -mcmodel medium -shared-intel

$(TARGET): $(OBJECTS)
$(OBJECTS): $(SOURCES)

.f.o:
    $(FC) -c $(FFLAGS) $*.f

最佳答案

可能您正在寻找MAKECMDGOALS

下面我粗略地修改了你的Makefile,请检查下面:-

SOURCES = a1.f a2.f a3.f
    OBJECTS = $(SOURCES:.f=.o)
    TARGET = myexececutable.x

    gnu: GNU_FC $(TARGET)

    intel: INTEL_FC $(TARGET)

    ifeq ($(MAKECMDGOALS),gnu)
    GNU_FC:
        FC = gfortran-4.8
        FFLAGS = -O3 -mcmodel=medium -shared
    endif

    ifeq ($(MAKECMDGOALS),intel)
    INTEL_FC:
        FC = ifort
        FFLAGS = -O3 -mcmodel medium -shared-intel
    endif

    $(TARGET): $(OBJECTS)
    $(OBJECTS): $(SOURCES)

    .f.o:
        $(FC) -c $(FFLAGS) $*.f

更多信息可以在这里获取

https://www.gnu.org/software/make/manual/html_node/Goals.html][1]

关于linux makefile 帮助声明基于 make gnu 或 make linux 规则的 FC FFLAGS 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34447373/

相关文章:

linux - 找不到 editorconfig-core-c 的 Makefile

调用 adb start-server 时 Linux 系统死机

javascript - 从javascript中的函数更新全局变量

python - Str 已定义为全局变量

variables - 在脚本 block 中引用变量

linux - Buildroot 导出配置符号的位置

linux - *** 没有规则可以创建 `module_netcdf_io.o' 目标,而 `driver.exe' 需要该目标。停止。错误

c - 如何更改 tcsetattr() 的 Linux 中断定时器

c - 如何更新命令行输出?

linux - Kohana_HTTP_Exception [404] : The requested URL/was not found on this server