使用自定义标志编译XCode 5项目

时间:2014-05-14 19:54:24

标签: c++ xcode

我有一个cpp文件,我可以使用以下命令从命令行编译:

 clang++ main.cpp -O2 -larmadillo

或通过

使用g ++编译器
 g++ main.cpp -O2 -larmadillo

我的问题是如何在Xcode 5.1.1中编译main.cpp?

以下是我的尝试:

1)项目 - >构建设置 - >其他C ++标志 - >添加' -O2 -larmadillo'有

2)目标 - >构建设置 - >其他C ++标志 - >添加' -O2 -larmadillo'有

也没有帮助。

我是这个链接/编译魔法的新手,所以我不知道从哪里开始。

1 个答案:

答案 0 :(得分:1)

clang++g++可以充当编译器和编译器驱动程序。当您从命令行运行它们作为编译器驱动程序时,它们在内部处理运行获取可执行文件的所有步骤,包括编译,汇编和链接。

但是当Xcode正在进行构建时,它反而希望将clang作为编译器运行并单独处理链接。因此,在“其他C ++标志”中传递链接器标志基本上就像在做:

// compile step (no linking)
clang++ main.cpp -O2 -larmadillo -c

// linking step (error, missing library)
clang++ main.o

因此,您需要做的是更改构建设置,以便Xcode知道在进入链接步骤时需要在该库中进行链接。一种快速而肮脏的方法是将链接器标志添加到“其他链接器标志”(并适当地设置库搜索路径),但最好编辑目标的“构建阶段”并更新“链接二进制文件库” “使用适当的库。您可能还需要将目标的构建设置中的SDK更改为”当前Mac OS“,以便Xcode将使用您安装的任何库,而不是严格限制默认OS X中可用的库。安装。