1) 我们需要 Makefiles 在 z/OS USS 和 Linux 平台上构建 C++。是否建议在 z/OS USS 上使用 gnu make 以保持我们的 makefile 通用?
2) 如果 Makefiles 是通用的,那么 Makefiles 中的一些步骤,仍然会以平台为条件。我们可以通过类似于条件编译的步骤来做到这一点吗?如果是的话,我们能否获得语法方面的帮助?
3) 我们的 z/OS USS Makefile 具有 shell 脚本或命令组,如下例所示,方括号 [] 将命令作为一组呈现给 shell,而不是一次一行。看来使用GNU make,我们不得不将这些命令修改成一行,这样很乱,而且嵌套循环是个问题。有没有更简单的方法来使用 gmake 对命令进行分组?
[
dirs=$(targets)
rc=0
for dir in $$dirs
do
cd $$dir/src
make -r
rc=$$?
if [ $$rc != 0 ]; then
echo "build failed for directory:" $$dir:
break;
fi
cd ../..
done
echo "return code from make = " $$rc
]