转载请注明原文链接:https://blog.csdn.net/haimo_free/article/details/107677667
15. 编码样式
总体而言,这些编码样式规则可以帮助你在Buildroot中添加新文件或重构现有文件。
如果你稍微修改了一些现有文件,那么重要的是保持整个文件的一致性,因此你可以:
- 要么遵循此文件中使用的可能不推荐使用的编码样式,
- 要么重做以使其符合这些规则。
15.1 Config.in
Config.in文件包含了几乎所有在Buildroot中可配置的选项。示例:
config BR2_PACKAGE_LIBFOO
bool "libfoo"
depends on BR2_PACKAGE_LIBBAZ
select BR2_PACKAGE_LIBBAR
help
This is a comment that explains what libfoo is. The help text
should be wrapped.
http://foosoftware.org/libfoo/
- bool、depends on、select和help行缩进一个Tab。
- help文本本身缩进一个Tab加两个空格。
- help文本应换行使其每行长度小于72列,其中制表符占8列,因此文本本身为62个字符。
Config.in是Buildroot使用的配置工具(通常为kconfig)的输入。有关kconfig语言的更多详细信息,请参阅http://kernel.org/doc/Documentation/kbuild/kconfig-language.txt。
15.2 .mk
- 头部:mk文件以header开始。它包含模块名称,最好用小写,并包含在由80个哈希组成的分隔符之间。在header后必须有一个空行。
################################################################################
#
# libfoo
#
################################################################################
- 分配:在=前后各有一个空格,注意不要试图对齐等于号。
LIBFOO_VERSION = 1.0
LIBFOO_CONF_OPTS += --without-python-support
- 定义:使用制表符缩进。注意,define块内的命令应始终以Tab缩进开头,make会将此识别为命令。
define LIBFOO_REMOVE_DOC
$(RM) -fr $(TARGET_DIR)/usr/share/libfoo/doc \
$(TARGET_DIR)/usr/share/man/man3/libfoo*
endef
- 可选依赖项:
- 首选多行语法
- 保持配置选项和依赖项紧密靠近。
建议:
ifeq ($(BR2_PACKAGE_PYTHON),y)
LIBFOO_CONF_OPTS += --with-python-support
LIBFOO_DEPENDENCIES += python
else
LIBFOO_CONF_OPTS += --without-python-support
endif
不建议:
LIBFOO_CONF_OPTS += --with$(if $(BR2_PACKAGE_PYTHON),,out)-python-support
LIBFOO_DEPENDENCIES += $(if $(BR2_PACKAGE_PYTHON),python,)
- 可选hook:在代码块内保持hook声明和定义在一起。
正确:
ifneq ($(BR2_LIBFOO_INSTALL_DATA),y)
define LIBFOO_REMOVE_DATA
$(RM) -fr $(TARGET_DIR)/usr/share/libfoo/data
endf
LIBFOO_POST_INSTALL_TARGET_HOOKS += LIBFOO_REMOVE_DATA
endif
错误:
define LIBFOO_REMOVE_DATA
$(RM) -fr $(TARGET_DIR)/usr/share/libfoo/data
endef
ifneq ($(BR2_LIBFOO_INSTALL_DATA),y)
LIBFOO_POST_INSTALL_TARGET_HOOKS += LIBFOO_REMOVE_DATA
endif
15.3 文档
文档使用asciidoc格式。有关asciidoc语法的更多详细信息,请参见http://www.methods.co.nz/asciidoc/userguide.html。
15.4 支持脚本
support/和utils/目录中的某些脚本是用Python编写的,应遵循PEP8 Style Guide for Python Code的要求。