2012-07-04 17 views
0

也許我問一個愚蠢的問題,但有什麼辦法可以告訴automake我的項目包括文件,當我做一個「make dist」,但不是當我做一個「make install 「?Automake:不同的安裝目標和工具鏈

也許我的行事方式不正確,爲了讓它更清晰,我會告訴我需要什麼。

  1. 我需要在一個嵌入式板卡部署我的應用程序,我用「make install」的腳本來創建可以複製到目標板的包裝。

  2. 另一方面,我希望能夠更新我的庫和包含文件的工具鏈。

在第一種情況下,我不能有任何脂肪浪費我有限的閃存,只是讓應用程序運行所必需的東西。

在第二個,我需要有頭文件,pkgconfig和開發所需的所有東西。

我應該如何配置我的「Makefile.am」以及期望哪些規則以便達到我的目標?

真的很感謝。

回答

0

我不認爲autoconf真的被設計成一個通用的安裝程序/卸載程序,它會給你這種控制,但至少有一些痛苦。您正在尋找類似dpkg-buildpackagerpmbuild在那裏你可以的make install輸出分成特定的子包,所以你可以有:

  • 是針對嵌入式主板和可能的工具鏈,這取決於在包(數字存儲示波器,可執行文件和其他在運行時需要的文件)
  • 富-dev的富-devel的工具鏈(頭,靜態庫,發展所需要的其他文件)。
+0

事實上並非如此。我的需求很簡單,以證明這樣的事情是合理的。我只是希望能夠設置給定的腳本SUID,其他數據文件R/W的任意權限等等。我明白你的意思,並且傾向於同意沒有我需要的條款,但我仍然希望有一個更清晰的方式,而不是「完成後」。真的感謝。 – j4x

+0

但是在#1中你說過你已經在創建「一個包裹」了。我只是建議你使用專爲包裝設計的工具。這些工具還設置了許多其他功能。如果它真的比我想象的簡單,那麼可以根據他們需要運行的時間來查看automake安裝鉤子「install-data-local」或「install-data-hook」。 – ldav1s

+0

我明白你的意思。不過,我的觀點是,當我使用「鉤子」時,我首先做錯了以後的修復,而且對我來說似乎並不明智,所以我想知道是否有什麼方法可以讓它一開始就是正確的。從你說的和我在網上找到的東西看來,這似乎是不可能的,我必須忍受「-hook-」或其他任何_later fix_解決方法。我現在清楚了嗎?再次感謝! – j4x

2

我只是希望能夠設置一個給定的腳本SUID,其他數據文件 R/W任意權限等。

我想添加$(DESTDIR)的makefile用戶變量做到這一點。 由於它沒有被automake定義,所以「make install」使用它爲空, ,但是dpkg-buildpackage使用「make dist」目標來定義它。

(參見:http://www.gnu.org/prep/standards/html_node/DESTDIR.html#DESTDIR

它幫助我管理的setuid安裝:

configure.ac

# 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") 

Makefile文件。am

if SETUID_INSTALL 
install-data-hook: 
     /bin/chmod 4755 $(DESTDIR)$(bindir)myBinary 
endif