在 z/OS makefile 中使用条件

Using conditionals in a z/OS makefile

我已经成功地使用 z/OS make 构建了我的应用程序。我现在已经指出我的项目,我从应用程序的调试版本移动到“发布”版本,a.k.a 非调试,所以我的编译选项和 link 选项改变了。

我一直在尝试在我的 makefile 中使用条件语句,这意味着我不必更改文件中的多行即可在两种构建模式之间切换,但我找不到 ANY z/OS make 中的条件示例,手册中关于它们的少量文档不足以真正发现如何使其工作。我希望这里有人已经设法让他们工作(没有双关语意)并且可以启发我。

这是我想要的(来自 makefile 的片段):-

BuildType=DEBUG

.IF ($(BuildType)==DEBUG)
CompOpts= -c -W"c,debug,LP64,sscomm,dll" -D_DEBUG
.ELSE
CompOpts= -c -s -W"c,LP64,sscomm,compress,dll"
.END

请注意,我了解设置 BuildType 的方法有很多种。为了简单地提出问题,此代码段将其设置为在线。当前的问题是 .IF 语句的语法。我无法使 .IF 语句起作用。这就是我希望得到的帮助或工作示例。

我设法让一些东西工作,我只需要编辑文件中的一个字符就可以在两种模式之间切换,但这绝不是理想的。 N.B。 ANYTHING 未在 makefile 中设置任何值。

# In the .IF clause below, if you have != it will run the DEBUG build
# and if you have == it will run the RELEASE build
.IF ($(ANYTHING)==$(NULL))
CompOpts= -c -W"c,debug,LP64,sscomm,dll" -D_DEBUG
.ELSE
CompOpts= -c -s -W"c,LP64,sscomm,compress,dll"
.END

以下语法应该适用于 z/OS make:

.IF $(BuildType) == DEBUG
CompOpts= -c -W"c,debug,LP64,sscomm,dll" -D_DEBUG
.ELSE
CompOpts= -c -s -W"c,LP64,sscomm,compress,dll"
.END

当您调用 make 文件时:

make -DBuildType=DEBUG

它将select编译器选项的调试版本,否则将select生产版本。