2010-03-11 108 views
17

如何讓Eclipse在一個項目中一次構建多個二進制文件(無需手動編寫Makefile)?在一個Eclipse項目中構建多個二進制文件

我有一個CGI項目,導致多個.cgi程序由Web服務器運行,再加上他們使用的幾個庫。手工製作的Makefile用於慢慢構建它變得無法維護。我們使用Eclipse的「內部構建」來構建所有其他項目,我們也希望在這裏使用它,但爲了我自己的利益,我無法找到如何讓Eclipse以結果形式創建多個小程序,而不是鏈接所有內容成一個二進制。

+1

你應該考慮問一個單獨的問題,關於如何使你的Makefile更易於維護,以防萬一這是一個死衚衕 – 2010-06-24 05:54:07

+0

我第二個Zac表達的想法。爲什麼你的Makefile不可維護?許多大型複雜的軟件項目在快速變化的代碼庫上使用makefile非常成功。 – 2010-06-27 23:52:50

回答

21

這裏描述的解決方案:http://tinyguides.blogspot.ru/2013/04/multiple-binaries-in-single-eclipse-cdt.html。 有一個摘錄:

  1. 創建一個管理項目(文件>新建C++項目>可執行文件)
  2. 添加包含多個主源代碼()函數
  3. 轉到項目>屬性> C/C++常規>路徑&符號>管理配置
  4. 爲每個可執行文件構建配置併爲其命名(您可以克隆現有配置,例如Debug和Release)。
  5. 從項目瀏覽器中右鍵單擊每個包含main()函數>資源配置>從構建中排除的源文件,並排除除使用此main()函數生成可執行文件的構建配置外的所有構建配置
  6. 全部其他代碼默認包含在所有構建配置中。您可能需要根據您的應用程序進行更改。
  7. 您現在可以通過Project>構建配置>設置活動,項目>建設項目
+3

或通過「Project> Build Configurations> Build All」一次性構建它們全部 – 2014-11-09 08:01:46

6

將Eclipse用作生成代碼的生成系統通常看起來不太合適。我認爲這是一個出色的IDE,並且已經廣泛用於Java和C++項目,但是對於構建系統,我堅信Ant,make和其他專用構建工具是可行的。

有幾個方面的原因:

  • 專門的編譯應用程序提供你正在尋找產生多個可執行目標非常靈活。

  • 螞蟻和支持大多數可以想象的任意構建過程鏈(雖然不是全部)。

  • 構建描述文件格式的專用構建實用程序可能比IDE等IDE工具提供更高的穩定性和向後兼容性。另外,我很確定Eclipse的內部構建特性依賴於「.project」文件描述,而後者的格式可能不像Ant或make的構建描述格式那樣穩定。

  • 通用,基本構建實用程序通常是命令行爲主,這使得它很容易將其與更復雜的集成,更高級別的構建自動化構建管理像脈衝,CruiseControl的,等

  • 公用事業

激發你的問題的需要是告訴你,現在是切換到更好的構建工具的時候了。

2

還有就是用 s到創建一個二進制文件(或共享庫的方式構建各主要功能的可執行文件,在我的情況)從每個構建配置。使用上面的答案,這意味着從每個構建配置手動排除除有效的主文件之外的所有文件。

我剛剛使用上述解答來緩解我的項目,該項目通過14個構建配置創建14個共享庫。然而,在配置蹦牀網上單人「從生成排除」設置是相當繁瑣的,所以我切換到使用下面的代碼依靠我的完整的主文件:

​​

需要注意的是它並沒有別的然後包括另一個。 cpp文件的名稱是從推導出的,並且是在編譯器選項中設置的符號。該符號是$ {CfgName},並將被eclipse自動替換爲當前配置名稱。

一個不需要配置,哪個文件包含在哪個編譯配置中。只需排除每個構建中的所有$ {CfgName} .cpp文件,並在每個構建中包含main.cpp。 PS:從氣墊船的答案給了我一個主要文件,不包含代碼的主意。如果其中包含來自不同有效主文件$ {CfgName} .cpp的共享代碼,那麼對其代碼進行處理可能變得不可行,因爲main.cpp中的頭文件在其中不可見。 我這樣做直到昨天,但維護破碎索引等代碼是一個很大的痛苦。

PPS:如果只有包含的.cpp文件發生更改,此過程當前爲會破壞主文件的自動重建。看來eclipse並不能識別$ {CfgName} .cpp中的變化(這是從構建中排除的)。因此每次更改後都需要手動重建。這是目前正在竊聽我;)

相關問題