让XCode在XCode 4.3中包含,编译和链接现有的(C++)代码库(.1)

ola*_*ure 14 c++ iphone xcode ios

我正在尝试将我现有的C++代码库'导入'到我的XCode iOS项目中.

问题是,xCode不会编译(因此也不会链接)我的代码.这是我到目前为止所做的:

  • 文件>将文件添加到"项目".我没有勾选"复制文件",因为它是多个平台的共享代码库,并且不能选择多个源代码副本.
  • 我已经为"标题搜索路径"项目设置添加了适当的路径.包括头文件在内,我可以从Objective-C++(.mm)文件#include"stuff.h".

但是,我找不到任何方法来实际告诉XCode编译.cpp文件?

几点:

  • 我不是在寻找一种方法将它预先编译成一个库并以这种方式进行链接
  • 该项目是一个标准的iOS Objective-C项目.从中调用C++代码(这不是问题)

更新

我已将codebase 目录添加到目标的"Compile Sources"中.我实际上必须在弹出的对话框中单击"添加其他...",因为我无法选择对我的代码库的目录引用.

当我添加它时,XCode会问我是否要"创建外部构建系统项目".我把它留下来,两个字段的默认值为"/ usr/bin/make"和"$(ACTION)".但是,我的代码库在构建期间不会被编译.我必须编写自己的Makefile吗?

如果我没有选择"创建外部构建系统项目",则会在目标下创建目录引用,但在构建期间不会编译并发出警告:

warning: no rule to process file '$(PROJECT_DIR)/../codebase'
of type folder for architecture i386
Run Code Online (Sandbox Code Playgroud)

sch*_*sch 20

即使您没有选中" 复制文件",也必须在将文件添加到项目时检查" 添加到目标 ".

在此输入图像描述

如果您忘记这样做,可以选择目标,转到Build Phases选项卡并将文件添加到Compile Sources.

在此输入图像描述

  • 我们到了那里:)如果我添加一个.cpp文件,它将包含在构建中!但是,如果我选择整个目录(请参阅我更新的问题),则不会构建任何内容.我宁愿不手动选择我所有的gcillion .cpp文件(包括路径是错误的,以及将来必须手动添加/删除文件的地狱) (4认同)
  • 同样的问题在这里 我可以一次添加一个,但这令人沮丧.尝试添加一个文件夹,它给了我同样的错误.有解决方案吗 (4认同)

Hal*_*far 8

如果您转到目标 - >构建阶段 - >编译源 - >"+" - >"添加其他" - >(选择外部源文件夹) - >选择:为任何添加的文件夹创建组 - >未选中:复制项目进入目的地.

现在你的文件夹将在XCode中,模仿结构.如果在XCode中将源文件添加到该文件夹​​,则源文件将被添加到外部源目录中.因此,解决了使用多个IDE和管理源链接的难易程度.

抓住了.您仍然需要手动将文件添加到"编译源"区域.这很简单.只需单击并将源文件从XCode中的组目录拖到"编译源"窗口即可.所以现在添加源文件还有一个额外的步骤.忘记将它们添加到Compile Sources窗口将产生未解析的符号编译错误.

  • iOS开发人员认为这是一个可行的选择.如果您有几个文件,这很好,但是当您有数百个文件时,这很荒谬.我无法相信这个问题从XCode 8开始就没有得到解决. (6认同)
  • 光是看到“拖放”就让我大吃一惊。这个 .pbxproj 文件让我大吃一惊,它的格式太愚蠢了。与多个开发人员在多个目标上合作使得整个过程因所有这些引用而中断。例如,如果您在合并拉取请求之前向项目添加目标,则您的新目标将不会与您合并的新“源文件”相关联……现在就找出缺少的目标。有史以来最糟糕的 IDE,我用过很多。 (2认同)