Makefile Automake:针对目标和工具链的不同安装

Makefile Automake:针对目标和工具链的不同安装,makefile,installation,embedded,autoconf,automake,Makefile,Installation,Embedded,Autoconf,Automake,也许我问了一个愚蠢的问题,但有没有什么方法可以让automake在我执行“makedist”时放我的项目包含文件,而不是在我执行“makeinstall”时放 也许我的行为方式不对,所以为了更清楚,我会告诉你我需要什么 我需要在嵌入式板中部署我的应用程序,并在脚本中使用“makeinstall”创建可以复制到目标板的包 另一方面,我希望能够用我的库更新我的工具链并包含文件 在第一种情况下,我不能有任何脂肪浪费我有限的闪存,但只是必要的东西,使应用程序运行 在第二个示例中,我需要有头文件、pkgc

也许我问了一个愚蠢的问题,但有没有什么方法可以让automake在我执行“
makedist
”时放我的项目包含文件,而不是在我执行“
makeinstall
”时放

也许我的行为方式不对,所以为了更清楚,我会告诉你我需要什么

  • 我需要在嵌入式板中部署我的应用程序,并在脚本中使用“
    makeinstall
    ”创建可以复制到目标板的包

  • 另一方面,我希望能够用我的库更新我的工具链并包含文件

  • 在第一种情况下,我不能有任何脂肪浪费我有限的闪存,但只是必要的东西,使应用程序运行

    在第二个示例中,我需要有头文件、pkgconfig以及开发所需的所有内容

    我应该如何配置我的“
    Makefile.am
    ”,以及需要哪些规则才能实现我的目标


    真的非常感谢。

    我不认为
    autoconf
    真的被设计成一个通用的安装程序/卸载程序,它可以给你提供这样的控制,而不会带来任何痛苦。您正在寻找类似于
    dpkg buildpackage
    rpmbuild
    的东西,您可以将
    make install
    的输出拆分为特定的子包,这样您就可以:

    • 包foo适用于嵌入式板和可能的工具链,具体取决于包中的内容(DSO、可执行文件和运行时所需的其他文件)
    • 为工具链打包foo-dev或foo-devel(开发所需的头文件、静态库文件和其他文件)
    我只想能够设置一个给定的脚本SUID和其他数据文件 R/W任意权限等

    我认为添加$(DESTDIR)的makefile用户变量可以做到这一点。 由于它不是由汽车制造商定义的,“使安装”使用它为空, 但dpkg buildpackage使用“makedist”目标来定义它

    (见:)

    它帮助我管理setuid安装:

    configure.ac:

    Makefile.am:


    事实上不是。我的需要很简单,可以证明这样的事情是正确的。我只想能够设置一个给定的脚本SUID,其他数据文件R/W任意权限等等。我理解你说的,并且倾向于同意没有为我需要的东西做任何准备,但我仍然希望有一个更干净的方式,而不是“做完后上钩”。真的谢谢。但是在#1中,你说你已经在创建“包”。我只是建议你使用一种专门为包装设计的工具。这些工具还可以设置文件权限,以及其他许多功能。如果它真的比我想象的简单,你可以看看automake安装钩子“本地安装数据”或“安装数据钩子”,这取决于它们需要运行的时间。我明白你的意思。不过,我的观点是,当我使用“钩子”时,我首先做的是错误的,以便以后进行修复,这对我来说似乎不明智,所以我想知道是否有任何方法可以在一开始就纠正它。从你所说的和我在网络上所发现的来看,这似乎是不可能的,我不得不接受“-hook-”或任何其他后来的修复方法。我现在清楚了吗?再次感谢!
    # Add option to disable setuid during install, use in distcheck
    AC_ARG_ENABLE(setuid-install, 
     AS_HELP_STRING(
     [--disable-setuid-install       do not set setuid flags during install]), 
     [enable_setuid_install=$enableval], [enable_setuid_install="yes"])
    AM_CONDITIONAL(SETUID_INSTALL, test x"$enable_setuid_install" = "xyes")
    
    if SETUID_INSTALL
    install-data-hook:
            /bin/chmod 4755 $(DESTDIR)$(bindir)myBinary
    endif