15

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

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

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

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

几点:

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

更新

我已将代码库目录添加到目标的“编译源”中。我实际上必须在弹出的对话框中单击“添加其他...”,因为我无法选择对我的代码库的目录引用。

当我添加它时,XCode 会询问我是否要“创建外部构建系统项目”。我把它打勾,两个字段的默认值是“/usr/bin/make”和“$(ACTION)”。但是,我的代码库在构建过程中没有被编译。我必须编写自己的 Makefile 吗?

如果我不选择“创建外部构建系统项目”,则会在目标下创建一个目录引用,但在构建过程中不会编译并发出警告:

warning: no rule to process file '$(PROJECT_DIR)/../codebase'
of type folder for architecture i386
4

2 回答 2

21

即使您不选中Copy Files ,在将文件添加到项目时也必须选中Add to Targets

在此处输入图像描述

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

在此处输入图像描述

于 2012-04-12T17:31:40.813 回答
9

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

现在您的文件夹将在 XCode 中,模仿结构。如果您将源文件添加到 XCode 中的该文件夹,则源文件将被添加到您的外部源目录中。因此,使用多个 IDE 和必须管理源链接的便利性得到了解决。

捕获。您仍然必须手动将文件添加到“编译源”区域。这是相当简单的。只需单击并将源文件从 XCode 中的组目录拖到 Compile Sources 窗口中。所以现在添加源文件时有一个额外的步骤。忘记将它们添加到 Compile Sources 窗口将产生未解决的符号编译错误。

于 2012-05-23T20:50:22.550 回答