微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何让安装的OpenWrt包头文件更有条理

如何解决如何让安装的OpenWrt包头文件更有条理

将软件包移植到OpenWrt时,如何使安装的软件包头文件在$(STAGING_DIR)中更有条理

通常,头文件会使用指定的文件名和保留的文件夹构造函数一一安装到usr/include

define Build/InstallDev
   $(INSTALL_DIR) $(1)/usr/include/a
   $(INSTALL_DIR) $(1)/usr/include/b
   $(INSTALL_DIR) $(1)/usr/include/c
   $(CP) $(PKG_BUILD_DIR)/common.h $(1)/usr/include/
   $(CP) $(PKG_BUILD_DIR)/a/a.h $(1)/usr/include/a/
   $(CP) $(PKG_BUILD_DIR)/b/b.h $(1)/usr/include/b/
   $(CP) $(PKG_BUILD_DIR)/c/c.h $(1)/usr/include/c/
endef

define Build/clean
   rm $(1)/usr/include/a/a.h
   rm $(1)/usr/include/b/b.h
   #blablabla...
endef

使用此方法

  • 如果软件包本身使用另一个文件(c.h)更新,则必须再次编辑Makefile。
  • 也在Build/Clean部分中w删除软件包时。
  • a.h被丢弃在软件包中时,该文件仍将保留在$(STAGING_DIR)目录中,直到您手动将其删除为止。

然后,发生了一些变化:

  • 将标头文件安装到usr/include/$(PKG_NAME)而不是usr/include中以进行更多的组织。
  • 使用find and copy,我们可以使用一个公共目录安装/删除所有头文件,而无需再次编辑。
    define Build/InstallDev
      $(INSTALL_DIR) $(1)/usr/include/$(PKG_NAME)
      pushd $(PKG_BUILD_DIR)    && \
         find ./ -name '*.h' -exec cp --parents $(1)/usr/include/$(PKG_NAME) \; &&\
         popd
    endef
    
    define Build/clean
       $(RM) $(1)/usr/include/$(PKG_NAME)     //install and remove header files with one command
    endef

通过此更改,另一个依赖于此程序包的包必须将这些头文件的GCC标志-I路径指定为“ TARGET_CFLAGS”。

define Package/test
   DEPENDS:= +base
endef

// is there a way to let it automatically add this path to cflags?
TARGET_CFLAGS += -I$(STAGING_DIR)/usr/include/base

有时TARGET_CFLAGS不会传递到Makefile包中,为此我必须做很多改变。

**这不是问题,更像是头脑风暴。 **

我想知道其他人通常会做些什么来使头文件更井井有条,并使清理功能更强大。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。