使用XCode构建、分析和编辑unix\linux控制台程序

使用XCode构建、分析和编辑unix\linux控制台程序,c,linux,xcode,macos,C,Linux,Xcode,Macos,请您提供一些在XCode中构建、分析和编辑C/C++unix/linux控制台程序的指导 我找不到最近关于这个话题的任何方法 似乎对于XCode项目来说是必须的。所以我用“外部构建系统”创建了一个新项目,并通过拖放添加了我的*.c和*.h文件 但我不能从那个里“附加到进程”,因为菜单项是灰色的 而且,即使结构的定义在同一个文件中,代码完成和代码跳转也不起作用 问题在于构建/分析/编辑现有的C/C++程序,而不是创建新的程序 例如,此人正在使用XCode进行MySQL开发:是苹果的东西,而Linu

请您提供一些在XCode中构建、分析和编辑C/C++unix/linux控制台程序的指导

我找不到最近关于这个话题的任何方法

似乎对于XCode项目来说是必须的。所以我用“外部构建系统”创建了一个新项目,并通过拖放添加了我的*.c和*.h文件

但我不能从那个里“附加到进程”,因为菜单项是灰色的

而且,即使结构的定义在同一个文件中,代码完成和代码跳转也不起作用

问题在于构建/分析/编辑现有的C/C++程序,而不是创建新的程序

例如,此人正在使用XCode进行MySQL开发:

是苹果的东西,而Linux上没有它(我不确定在交叉编译器设置中使用它——主机是苹果,目标是Linux——是一种很好的工作方式,这可能是不可能的)

在Linux上,您可以使用传统的工具(如Emacs、Make、GCC等的组合,这是Unix人员的工作方式),或者您可以尝试一些奇特的工具,例如,以及许多其他工具


我已经长大了,发现IDE对我来说几乎毫无用处,我很高兴使用Emacs、Make、GCC、Svn或Git、Gdb等混合体。我知道很多经过实验的Linux开发人员都不使用IDE

>我在学校里用XCODE写了很多C和C++控制台程序。我从Xcode控制台应用程序模板开始。我依赖于标准C库和POSIX。我远离苹果特有的图书馆。我可以在Xcode中构建、运行、配置和调试程序。在Xcode中我唯一做不到的就是生成一个可移植的构建配置。对于这些类项目控制台程序,我只需要为每个项目手工编写一个makefile。因为我从一开始就知道我需要一个手工编写的makefile,所以我使构建过程保持简单

现在我主要编写iOS应用程序,但偶尔也会编写控制台应用程序来预处理iOS应用程序的数据。我看不到新版本的Xcode在构建跨平台构建系统方面有任何改进。Xcode专注于iOS和Mac应用程序,但也承认需要控制台程序,并包括一些特定于Mac OS X的支持

因此,对于在Xcode中为其他平台编写控制台程序,我的建议是保持构建过程简单。从Xcode控制台应用程序项目模板开始。继续使用Xcode项目构建系统。使用Xcode IDE特性使程序正常工作。然后将构建过程移植到外部构建系统。编写一个makefile,或者使用您喜欢的任何构建工具。使用MacOSX上的命令行从这个新的构建系统在MacOSX上构建和测试程序。然后将项目移动到另一个平台,并再次构建和测试。当我到达第二个站台时,我很少发现任何问题


我甚至在我的团队成员不在Mac上的团队中使用这种方法。我们每个人在构建系统时使用自己的选择,共享源代码文件。然而,我可以看到,为大型复杂程序维护多个构建系统将很快变得站不住脚。在这一点上,我建议在一个IDE上进行标准化

对于代码完成、代码跳转等,您需要为实用程序创建一个构建目标。多年来,我一直在使用Xcode开发CLI实用程序,然后将其移植到其他*nix平台

以下是创建生成目标的基本说明,它将允许您在使用实用程序时充分利用Xcode环境:

  • 创建一个空项目
  • 使用“命令行工具”模板(菜单栏->文件->新建->新建目标)添加目标
  • 删除模板添加的文件(通常是目标的名称)
  • 将源代码添加到Xcode项目中
  • 打开所创建目标的构建阶段:
  • 在导航器中单击项目名称
  • 从中心面板中选择您的目标
  • 单击“构建阶段”选项卡
  • 在“编译源代码”下添加了构建实用程序所需的源代码
  • 在“将二进制文件链接到库”下,添加链接实用程序所需的库
  • 您可能需要为新目标添加一个方案,如果需要:

  • 打开方案管理器(菜单栏->产品->管理方案)
  • 单击“立即自动创建方案”按钮
  • 您现在应该能够使用与OSX或iOS应用程序相同的工具来构建/配置/编辑您的实用程序

    以下是我完成上述工作的几个例子:

    • (拥有针对OpenSSL、OpenLDAP、Cyrus SASL和PCRE的Xcode项目,尽管它们目前正在为iOS编译)
    • (我使用Xcode为Linux/FreeBSD系统编写的项目)

    有一个简单的解决方案-了解bash、gdb、emacs。。。继续。告诉你,过一段时间,你甚至会在Mac上而不是在Xcode上使用这些工具:)我现在正在Linux上使用bash、gdb和vim(gvim)。但我想尝试使用XCode实用程序进行评测,等等。。。请看,您不能使用Xcode profiler评测为Linux等不受支持的平台/体系结构构建的应用程序。另一方面,Xcode中绝对没有任何东西是用英特尔的放大器(vTune)无法做到的。好吧,或者在OSX上构建应用程序并在那里对其进行概要分析,但这也没有多大意义,因为行为会有很大的不同(例如epoll与kqueue等)。只是不要使用valgrind:)是的,但是在Xcode中使用分析器非常方便,即使是在处理要移植到其他系统的CLI实用程序时也是如此。它可能不会捕获特定于平台的问题,但会捕获代码中的问题。