我有一个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'有
也没有帮助。
我是这个链接/编译魔法的新手,所以我不知道从哪里开始。
答案 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中可用的库。安装。