"规则命令行的约定-stc8h 系列单片机技术参考手册"
在编写多系统兼容的 Makefile 时,遵循特定的规则命令行约定是至关重要的,以确保在不同的操作系统中都能正常运行。以下是这些约定的详细说明:
1. **使用 sh 而非 csh**: Makefile 中的规则命令应使用“sh”脚本语言,因为“sh”是更通用的选择,而“csh”可能在某些系统中不受支持。
2. **限制使用的命令**: 为了保持兼容性,应避免使用除以下列出的命令外的其他命令:
- cat, cmp, cp, diff, echo, egrep, expr, false, grep, install-info, ln, ls, mkdir, mv, pwd, rm, rmdir, sed, sleep, sort, tar, test, touch, true
3. **压缩工具**: 在创建“dist”目标的命令行中,可以使用“gzip”进行文件压缩。
4. **通用选项优先**: 应尽量使用工具命令的通用选项,避免使用特定系统才有的选项。例如,“mkdir -p”在 Linux 系统上有效,但在其他系统上可能不被支持。
5. **避免符号链接**: 避免在规则命令行中创建符号链接,因为并非所有系统都支持这种功能。虽然在类 Unix 系统中通常没问题,但对于不支持符号链接的系统(比如 MS-DOS),这样做可能会引起问题。
6. **使用变量表示命令**: 当涉及到编译器和工具程序时,如 ar, bison, cc, flex, install, ld, make, etc.,应使用变量来代表这些命令,以便于在修改命令时只需更改变量值。例如:$(AR), $(CC), $(INSTALL) 等。
7. **系统兼容性考虑**: 如果规则需要使用像“ranlib”或“ldconfig”这样的工具,应确保在不支持这些工具的系统中执行时给出提示,而非直接报错退出。
以上约定旨在保证 Makefile 在跨平台环境中的兼容性和可靠性。通过遵循这些规则,开发者可以创建出能够在多种操作系统上一致工作的构建脚本。
此外,提供的 GNUmake 中文手册章节摘要涵盖了 Makefile 的各个方面,包括概述、Makefile 的结构、规则、变量、搜索目录和特殊目标等。手册详细介绍了 Makefile 的各个组成部分,如规则的语法、依赖类型、通配符使用、目录搜索以及静态模式规则等,这些都是编写高效且跨平台的 Makefile 所必需的知识。通过深入理解这些内容,开发者可以编写出更加灵活和可维护的构建系统。