如何让安装的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 (将#修改为@)