2011-12-11 47 views
3

您可以給我一些建議,分析和編輯XCode中的C/C++ unix/linux控制檯程序的指針。使用XCode構建,剖析,編輯unix linux控制檯程序

我找不到任何有關該主題的最新HOWTO。

似乎對於XCode項目是必須的。所以我用「外部構建系統」創建了新項目,並通過拖放添加了我的* .c和* .h文件。

但是我不能從那裏「附加到進程」,因爲菜單項是灰色的。

此外,即使結構定義在同一個文件中,代碼完成和代碼跳轉也不起作用。

問題是關於構建/分析/編輯現有的C/C++程序,而不是創建新的程序。

例如此人正在使用的XCode爲MySQL開發:http://dom.as/2011/09/25/blowing-up-in-memory/

+1

有一個簡單的解決方案 - 閱讀關於bash,gdb,emacs ...並繼續。告訴你,過了一段時間,你甚至會在Mac上使用這些工具而不是Xcode :) – 2011-12-13 14:10:23

+0

我現在在Linux上使用bash,gdb和vim(gvim)。但我想嘗試使用XCode實用程序進行性能分析等......請看http://dom.as/2011/09/25/blowing-up-in-memory/ –

+0

您無法使用Xcode Profiler來配置爲不受支持的平臺/體系結構,如Linux。另一方面,在Xcode中絕對沒有你無法用英特爾放大器(vTune)做的事情。那麼,或者在OS X上構建應用程序並在其中進行配置文件,但這樣做也不會有多大意義,因爲行爲會有很大差異(例如,epoll vs kqueue等)。只是不要使用valgrind :) – 2011-12-13 14:44:26

回答

10

對於代碼完成,代碼跳轉等,您需要爲該實用程序創建構建目標。我多年來一直在使用Xcode來開發CLI實用程序,然後我將它們移植到其他* nix平臺。

下面是創建構建目標在您的實用程序工作時,這將讓你充分利用的Xcode環境的基本指令:

  1. 創建一個空的項目。
  2. 使用「命令行工具」模板(菜單欄 - >文件 - >新建 - >新建目標)添加目標。
  3. 刪除模板添加的文件(通常是目標名稱)。
  4. 將源代碼添加到您的Xcode項目中。
  5. 打開您創建的目標的構建階段:
    1. 單擊導航器中的項目名稱。
    2. 從中央面板中選擇您的目標。
    3. 點擊「Build Phases」標籤。
  6. 在「編譯源代碼」中添加了構建實用程序所需的源代碼。
  7. 在「Link Binary With Libraries」下添加所需的庫以鏈接您的實用程序。

您可能需要添加一種方案,新的目標,如果是這樣:

  1. 打開方式管理(菜單欄 - >產品 - >管理計劃)。
  2. 點擊「Autocreate Schemes Now」按鈕。

您現在應該可以像使用OS X或iOS應用程序一樣使用相同的工具來構建/剖析/編輯您的實用程序。

下面是我在那裏做了以上幾個例子:

  • https://github.com/bindle/iOSPorts(有OpenSSL的,OpenLDAP的,賽勒斯SASL和PCRE Xcode的項目,給予他們目前正在編制適用於iOS)。
  • ​​(我爲Linux /使用Xcode的FreeBSD系統編寫的項目)。
+0

這是最有用的信息大衛,謝謝! –

1

Xcode是蘋果的事情,你不用它在Linux(和我不知道,在一個交叉編譯器使用它設置-host是一個Apple,目標是一個Linux-是一種很好的工作方式,而且它可能是不可能的)。

在Linux上,你可以使用traditionnal工具(如Emacs中的混合,製作,GCC,...這是Unix的路人們工作),或者你可以嘗試一些花哨IDEanjutanetbeanseclipse許多好多其它的。

我已經足夠老了,可以找到IDE幾乎無用的我,我很高興使用Emacs,Make,GCC,Svn或Git,Gdb等等的混合物。我知道許多實驗Linux開發人員不使用IDE。

+1

是的,但在Xcode中使用分析器是非常方便的,即使在使用CLI實用程序移植到其他系統時也是如此。它可能不會捕獲特定於平臺的問題,但會遇到代碼問題。 –

1

我在學校時使用Xcode編寫了許多C和C++控制檯程序。我開始使用Xcode控制檯應用程序模板。我依賴於標準的C庫和POSIX。我遠離Apple特定的庫。我可以在Xcode中構建,運行,分析和調試程序。我在Xcode中唯一不能做的就是生成一個可移植的構建配置。對於這些類項目控制檯程序,我只需要爲每個項目寫一個makefile。因爲我從一開始就知道我需要一個手寫的makefile,所以我保持構建過程簡單。

現在我主要編寫iOS應用程序,但我偶爾會編寫一個控制檯應用程序來爲我的iOS應用程序預處理數據。我沒有看到用於構建跨平臺構建系統的新版Xcode有任何改進。 Xcode專注於iOS和Mac應用程序,但承認需要控制檯程序幷包含一些Mac OS X特定的支持。

所以我在Xcode編寫其他平臺的控制檯程序的建議是保持構建過程的簡單。從Xcode控制檯應用程序項目模板開始。留在Xcode項目構建系統中。使用Xcode IDE功能使程序正常工作。然後將構建過程移植到外部構建系統。編寫一個makefile,或者使用你喜歡的任何構建工具。使用Mac OS X上的命令行在這個新的編譯系統上構建並測試Mac OS X上的程序。然後將該項目移至其他平臺並重新構建並測試。當我到達第二平臺時,我很少發現任何問題。

我甚至使用這種方法在我的團隊成員不在Mac上的團隊中工作。我們每個人都在構建系統中使用我們自己的選擇,共享源代碼文件。然而,我可以看到,維護用於大型複雜程序的多個構建系統很快將變得站不住腳。在這一點上,我會建議在一個IDE上進行標準化。