GNUmakefile规范与命令约定
下载需积分: 4 | PDF格式 | 978KB |
更新于2024-08-09
| 144 浏览量 | 举报
"规则命令行的约定-layui当点击文本框时弹出选择框显示选择内容的例子"
在编写跨平台的Makefile时,遵循一定的规则命令行约定是至关重要的,以确保兼容性和可移植性。这里是一些核心的约定:
1. **使用“sh”而非“csh”**:在Makefile中编写规则时,应确保命令是“sh”(Bourne shell)兼容的,因为“csh”(C shell)不总是可用,且在某些系统上可能存在兼容性问题。
2. **限定使用特定命令**:在Makefile中,推荐使用一组标准的、广泛支持的命令,如`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. **允许使用“gzip”**:在创建“dist”目标时,可以使用“gzip”进行文件压缩,这是广泛接受的。
4. **通用选项优先**:使用命令的通用选项,避免依赖特定系统的扩展选项。例如,用`mkdir -p`创建多级目录时,要考虑不是所有系统都支持`-p`选项。
5. **避免符号链接**:尽管在类Unix系统中广泛使用,但在Makefile中创建符号链接可能会导致问题,因为某些系统(如MS-DOS)不支持。如果必须使用,要特别小心。
6. **使用变量表示命令**:对于像`ar`, `bison`, `cc`, `flex`, `install`, `ld`, `ldconfig`, `lex`, `make`, `makeinfo`, `ranlib`, `texi2dvi`, `yacc`这样的编译器和工具,通过变量如`$(AR)`, `$(BISON)`, `$(CC)`等来引用它们,便于集中修改和增强可移植性。同时,如果命令如`ranlib`或`ldconfig`在某些系统中不被支持,需提供相应的错误处理,告知用户原因,而不是直接导致构建失败。
这些约定有助于编写出能够在不同操作系统上正确工作的Makefile,减少了因系统差异而导致的编译和构建问题。理解并遵循这些约定,可以提高Makefile的可读性、可维护性和跨平台兼容性。
在实际使用中,可以通过阅读如《GNUmake中文手册》等文档,获取更详细的Makefile编写指南和最佳实践,以掌握Makefile的编写技巧和规则,从而更高效地管理项目构建过程。手册涵盖了Makefile的结构、规则、变量、自动变量、搜索路径、条件语句等多个方面,是学习和理解Makefile的宝贵资源。
相关推荐
物联网_赵伟杰
- 粉丝: 46
- 资源: 3953
最新资源
- torch_cluster-1.5.6-cp36-cp36m-linux_x86_64whl.zip
- D-无人机:拉无人机。 使用计算机视觉在喷漆墙上画画以实现精确导航
- myloader
- Metro_Jiu-Jitsu-crx插件
- 导航条,鼠标悬停滑动下拉二级导航菜单
- 中国企业文化理念:提炼与实施的流程及方法(第一天课程大纲)
- 使用videojs/aliplayer 实现rtmp流的直播播放
- irt_parameter_estimation:基于项目响应理论(IRT)的物流项目特征曲线(ICC)的参数估计例程
- visualvm_21.rar
- torch_sparse-0.6.4-cp38-cp38-linux_x86_64whl.zip
- redratel:数字代理
- JumpStart!-开源
- api-2
- Adoptrs-crx插件
- redis windows x64安装包msi格式的
- XX轧钢企业文化诊断报告