2011-04-10 71 views
0

我正在寫這個問題的部分基礎上related question on helper-scripts在哪裏把預製的二進制文件與automake?

我有一個使用autotools構建的C++軟件系統。對於它的一小部分功能,我的系統使用一個閉源預構建二進制文件:AMPL。我是一個免費的學生版軟件。假設我在C++代碼中調用的AMPL二進制文件的名稱是ampl-student。我使用system(...)調用從我的代碼中運行它。

我想ampl-student被移到/usr/bin以及運行「make install」時編譯後的C++代碼的二進制文件。我應該在的Makefile.am中添加ampl-student。我應該將它添加到bin_PROGRAMS變量嗎?

一個相關的問題是我應該甚至把ampl-student/usr/bin。有沒有更適合「輔助二進制」的地方?

我認爲這通常是一個壞主意,因爲預先編譯的二進制文件和代碼一起發佈並不能保證二進制文件在最終用戶的計算機上運行。但是在這種情況下,用戶羣非常小,我碰巧知道他們都使用相同的系統配置。因此,我們實際上使用deb軟件包來保持每個人都更新軟件系統的新版本。

編輯1:我要強調的是,問題是首先詢問在哪裏可以通過自動工具使用的Makefile.am文件中指定ampl-student

回答

5

我在$(pkglibexecdir)安裝:

pkglibexec_PROGRAMS = ampl-student 

# If you need to know the path in your code 
AM_CPPFLAGS = -DPKGLIBEXECDIR=\"$(pkglibexecdir)\" 

它不是一個真正的用戶程序,所以這個地方安裝它的方式。默認情況下,這將是$(prefix)/libexec/$(package)

0

這實際上取決於您是要運送軟件,還是要將其本地安裝在/ usr/bin中,並且所有用戶都將從此處訪問該軟件。

  1. 如果你打算把它安裝在/ usr/bin中,並且你也想把AMPL安裝在那裏,那麼定義一個符號常量到路徑中並使用它。
    的#define AMPL的/ usr/bin中/擴增子,學生
    取源文件要使用它,你可以添加,
    系統(AMPL);
  2. 如果您想運送代碼的二進制文件,那麼您應該將ampl-bin放在軟件的bin目錄中或創建一個dir。結構:

<您的工具>/src目錄
<您的工具>/bin中 - 你可以把擴增子,學生也在這裏
<您的工具> /第三方/ <工具1> .... < tooln>/bin /你可以把ampl-student放在這裏

正如你在發佈ampl-student之前已經正確地提到的那樣,它確實適用於工具應該運行的所有平臺。

+0

謝謝你的回答。然而,我更想知道爲Makefile.am添加哪些內容以便爲這些預構建的二進制文件指定一個好位置,以便在運行make install或deb軟件包安裝在Ubuntu中時,'ampl-student'文件結束了某個地方是有道理的(/ usr/bin是我認爲有意義的,但我不確定)。 – 2011-04-11 00:43:16

相關問題