-qmakedep

类别

输出控制

@PROCESS

无。

用途

生成包含适合包含在 make 命令的描述文件中的目标的依赖关系输出文件。

依赖关系输出文件以 .u 后缀命名。

-qmakedep-MMD的长格式。

语法

读取语法图跳过可视语法图-qmakedep =gcc

缺省值

不适用。

参数

gcc
匹配 GCC 格式的生成 make 规则的格式 : 依赖关系输出文件包含单个目标,其中列出了所有源文件的依赖关系。

如果指定不含子选项的 -qmakedep,那么依赖关系输出文件将为每个源文件的依赖关系指定单独的规则。

用途

make 命令使用依赖关系信息来确定文件的编译顺序。 make 命令还使用依赖关系信息来确定文件更改时必须重新编译的最小文件集。

IBM® Open XL Fortran 识别以下类型的源文件依赖关系:
  • 对通过 C 预处理器 #include 伪指令包含的文件的依赖关系。
  • 对通过 Fortran INCLUDE 伪指令包含的文件的依赖关系。
  • 对使用或扩展一个或多个 Fortran 模块的文件中模块符号文件的依赖关系。
  • Fortran 2008 开始扩展一个或多个 Fortran 子模块的文件中对子模块符号文件的依赖。 Fortran 2008 结束

对于在命令行上命名的每个源文件,将生成与对象文件同名但具有 .u 后缀的依赖关系输出文件。 不会为任何其他类型的输入文件创建依赖关系输出文件。 如果使用 -o 选项重命名对象文件,那么依赖关系输出文件的名称将基于 -o 选项中指定的名称。 有关更多信息,请参阅"示例"部分。

这些选项生成的依赖关系输出文件不是 make 描述文件;必须先链接这些文件,然后才能与 make 命令配合使用。 有关此命令的更多信息,请参阅操作系统文档。

如果还指定了 -qfullpath 选项,那么源和包含文件的绝对路径名将记录在依赖关系输出文件中。

还可以将 -qmakedep 与以下选项一起使用:

-MF 文件路径
设置依赖关系输出文件的名称,其中 file_path 是依赖关系输出文件的完整路径或部分路径或文件名。 有关更多信息,请参阅 -MF
-MT 目标
在生成的依赖关系文件中的 make 规则中指定对象文件的目标名称。 有关更多信息,请参阅 -MT

示例

示例 1: 要编译 mysource.f 并创建名为 mysource.u的依赖关系输出文件,请输入:
xlf -c -qmakedep mysource.f
示例 2: 要编译 source.f 并创建名为 object.o 的对象文件和名为 object.u的依赖关系输出文件,请输入:
xlf -c -qmakedep source.f -o object.o
示例 3:如果当前工作目录中有以下文件:
  • options.h
  • constants.h
  • n.F
  • m.f
options.h 文件包含以下代码:
@PROCESS free(f90)
constants.h 文件包含以下代码:
real(4), parameter :: pi = 3.14
n.F 文件包含以下代码:
#include "options.h"
module n
contains
  subroutine my_print(x)
    real, value :: x
    print *, x
  end subroutine
end module
m.f 文件包含以下代码:
#include "options.h"
module m
  use n
contains
  subroutine sub
    implicit none
    include 'constants.h'
    call my_print(pi)
  end subroutine
end module
要编译 n.F 并在 ./dependencies 目录中创建名为 n.u 的依赖关系输出文件,请输入:
xlf -c n.F -qmakedep -MF./dependencies -o n_obj.o
要编译 m.f 并在 ./dependencies 目录中创建名为 m.u 的依赖关系输出文件,同时在 m.u 文件中包含路径信息 /home/user/sample/ 作为对象文件的目标名称的一部分,请输入:
xlf -c m.F -qmakedep -MF./dependencies -MT '/home/user/sample/m.o'
生成的 n.u 文件如下所示:
n_obj.o n.mod: options.h
n_obj.o n.mod: n.F
生成的 m.u 文件如下所示:
/home/user/sample/m.o m.mod: n.mod
/home/user/sample/m.o m.mod: option.h
/home/user/sample/m.o m.mod: m.f
/home/user/sample/m.o m.mod: constants.h

相关信息