2012-03-14 112 views
2

假設我有一個跨平臺的C++庫,我們稱之爲ylib。我的主要開發平臺是Linux。我希望ylib可以由MSVC(2008,2010,11等)構建。如何生成vcproj文件?

這樣做的最好方法是什麼?我是否生成.vcproj文件?如果是這樣,怎麼樣?理想情況下,我可以在不使用Windows的情況下生成它們。 Windows不需要額外的依賴關係。 應該構建多個變體:調試dll,調試lib,釋放dll,使用動態運行時釋放lib,使用靜態運行時釋放lib。

+0

如何安裝Visual Studio並從那裏創建一個項目,然後添加你的東西? – 2012-03-14 16:13:21

+3

如果您還沒有嘗試在Windows上編譯它,您怎麼知道它在Windows上正確構建? – 2012-03-14 16:15:10

+0

@Roman:*理想情況下,我可以在不使用Windows的情況下生成它們。* – XTF 2012-03-14 16:43:27

回答

5

您可以使用cmake作爲您的構建腳本。 Cmake能夠從cmake構建腳本生成visual studio項目文件。所以你只需要分發你的cmake文件,然後使用windows的個人可以從中生成MSVC項目文件。

雖然正如評論中指出的那樣,但很難保證您可以在Visual Studio下實際構建自己的項目,而無需親自嘗試。

編輯:雖然我剛剛意識到你沒有要求在Linux上的額外依賴,這不會解決。除非您使用cmake自己生成vcproj文件,並分發它們。但個人而言,我認爲只需要擁有cmake依賴關係會更好。它免費提供,並且易於安裝。

這也有支持你的最終用戶碰巧擁有的任何版本的視覺工作室的優勢,而不需要分發幾種不同的格式。

+1

+1 CMake可以正常工作,但它會讓你每次想要刺傷你的眼睛編輯CMake腳本。另外,請注意生成的VS項目文件也需要CMake。 – villintehaspam 2012-03-14 16:21:23

+0

@villintehaspam:根據經驗,我可以告訴你,使用自動工具及其多種語法比cmake更加自我誘導,它將所有構建步驟重新集成在一個文件/語言中,這些步驟相當易於編程:) – SirDarius 2012-03-14 16:35:53

+0

@ obmarg:你不能分發cmake生成的vcproj文件。確保構建所有變體(並且具有適當的輸出名稱)對於cmake也不是微不足道的。 – XTF 2012-03-14 16:47:56

0

你只需要瞭解vcproj文件的格式,然後編寫它們 - 它們只是XML。

我不知道MSFT如何很好地記錄設置(如果歷史記錄是指南,這不是很好) - 因此對於簡單的項目,我只需在MSVC中創建一個項目並查看它寫入的內容。

另外,你可以只使用cmake已經這樣做。

+0

現在是2012年。我希望手工編寫這樣的文件不是必需的。 – XTF 2012-03-14 18:25:22

+0

@XTF - 我相信,只要有足夠大的許可證付款和保密協議,MSFT就會爲您提供XML規範。或者你可以閱讀cmake的來源 – 2012-03-14 18:44:22