2013-01-20 76 views
4

我是C++初學者,我開始開發我的第一個跨平臺的C++項目。我需要使用平臺特定的調用(Win32和POSIX),所以我需要在Windows和Linux中頻繁編譯。如何開發一個跨平臺的C++項目?

我正在使用的Whit單平臺項目,直到現在,Linux中的KDevelop和Windows中的Visual Studio 2012。

如何在兩個不同的操作系統中使用同一個項目中的兩個不同的IDE?

  1. 我應該使用單一的跨平臺的IDE嗎?
  2. 我應該學習CMake(或類似)並將其配置爲與兩個IDE一起使用嗎?
  3. 我能否將我的代碼託管在Web中並與離線項目自動同步?
  4. 替代品?

在此先感謝大家。

編輯:

只是爲了澄清,該項目將是一個學術協議一個簡單的服務器。將有一個客戶端要求上傳/從服務器檢索一些文件。 With scholastic我的意思是,例如,我必須使用pthreads/win32線程而不是更高級別的C++線程庫。

+2

在您提出任何其他問題之前,您應該開始接受已經提問的問題的答案。您可以通過點擊左側的tick-icone來接受答案。 – Philipp

+1

你可能會通過做一些關於0%接受率的事情來引發這個問題上的輸入熱點。 – WhozCraig

+0

對不起,我會接受我以前的問題。 – eang

回答

4
  1. 也許 - 真的取決於你最舒服的感覺。由於該項目是非圖形化的,所有的IDE都可以編輯文件和編譯。因此,您可以使用IDE在一臺機器上構建項目,然後將源移動到另一臺機器進行編譯。

  2. 我個人只是有兩個生成文件,一個用於Linux和一個用於WIDNOWS。使生活相當簡單[你可以有一個「外部」的生成文件,根據一些聰明的方法選擇合適的生成文件]。

  3. 是的,你應該找到一個版本控制系統,對於Windows和Linux(git的,反覆無常,顛覆,集市和其他幾個人)都適用。這樣,你不僅擁有一箇中央存儲庫[你可以使用任何一臺機器作爲其中的任何一臺服務器],但它也可以讓你跟蹤你的改變。絕對值得做!

  4. 有數百種不同的選擇。但是你保留它越簡單,而且你的工具越簡單,你就可以花更多的時間來實際編程你的項目,而不是像,例如,弄清楚爲什麼CMake沒有按照你想要的方式構建。

此外,請確保您將所有系統特定的代碼分離爲每個體系結構的一個文件。這樣,以後很容易移植到另一個體繫結構中,並且使得您的代碼中大部分都可以在兩個系統上編譯。

1

我最近的經驗建議看看Qt。 IDE(QtCreator)非常好,可在所有主要平臺上使用。

我用於一個相當簡單的項目,使用相當複雜的組件,如OpenCV和ZBar。我在Linux上開發,將源代碼複製到Windows,然後重新編譯。

我在兩個平臺上設置OpenCV都有些麻煩,所以我不能說這太容易了,但它工作正常。既然你已經知道KDevelop,你應該已經知道Qt。

我也非常看重Qt5作爲Ubuntu智能手機平臺的最新趨勢。我真的希望看到這種發展。

HTH

2
  1. 通常情況下,很容易調整,具體IDE項目/文件建立,以添加/移動/刪除源文件。因此,使用跨平臺的IDE並不重要。
  2. 你可以這樣做,我認爲CMake也可以爲一些IDE創建項目文件,然後用它來構建項目。
  3. Ahem,如果你想在網上託管它或不是你的選擇。你應該做的是使用某種版本控制。錯誤跟蹤系統也很有幫助。如果您想要開源代碼,使用現有的託管設施之一是明確的。
  4. 不是。

一個評論,雖然:你將有更多的麻煩,使C + +代碼便攜式。建立在像Qt這樣的工具箱之上非常有幫助。如果你想更接近標準的C++,至少考慮使用Boost來處理像線程,智能指針,文件系統訪問這樣的東西。祝你好運!

1

如何在兩個不同的操作系統中使用兩個不同的IDE並使用相同的項目?

我應該使用單一的跨平臺的IDE嗎?

不,我認爲這是問錯了問題的情況下。要製作一個跨平臺的項目,重要的是您的構建腳本和代碼的系統中立性質。有時候可能有助於爲您的首選IDE提供項目文件,但爲多個IDE維護多個項目文件只會使事情變得更加困難和複雜。相反,您應該專注於查找構建系統,以最大限度地減少您在項目維護上花費的時間。因此,CMake和PreMake似乎是實現這一目標的最佳工具之一。有幾十個替代品(如SCons,Cook,kbuild,Jam和Boost Jam等等),但是由於CMake和PreMake都生成了項目文件和構建腳本,它們可能是最好的解決方案。

您的里程將有所不同。

我能否將我的代碼託管在Web中並與離線項目自動同步?

你應該有作品無處不在你強大的源代碼控制。如果您使用某種類似Github或BitBucket的「雲」託管服務,Git和Mercurial似乎工作得最好,但他們並不需要它。根據你的工作環境和團隊規模,你可能更喜歡Subversion或者PerForce或者其他的東西,但這取決於你和你的團隊。

0
  1. 這將有所幫助,您很可能需要在很多平臺上進行調試......Qt Creator,Netbeans和Eclipse讓人想起。

  2. 是的。 cmake或qmake for Qt也許

  3. 沒有技術問題。只需使用版本控制!儘管如此,github和gitorious是開源項目的簡單選擇。

  4. 對於跨平臺C++ GUI應用程序而言,Qt是一個不費腦的選擇,也是沒有GUI的網絡應用程序的不錯選擇。