OS X上的libc ++在哪里?

时间:2013-04-12 21:49:17

标签: c++ xcode macos c++11

我已经构建了自己的libc ++,我通常将它包含在-I /path/to/lib/include -L /path/to/lib/lib中。但现在我必须与其他人一起分享Mac项目,我想给他们一个“正常工作”的Makefile™。

考虑以下计划:

#include <algorithm>
#include <iostream>
#include <vector>
using namespace std;
int main(void)
{
    uint32_t nums[100];

    for (size_t i = 0; i < 10; ++i)
    {
        nums[i] = 666;
    }

    vector<int> hello{1, 2, 3, 4, 5, 6, 7, 8};
    for_each(hello.begin(), hello.end(), [](int tal)
    {
        cout << tal << endl;
    });
}

当我用clang++ -o test test.cc编译它时,我自然会得到与缺少-std=c++11标志相关的错误。好的,所以我们添加它clang++ -std=c++11 -o test test.cc。这会产生一些错误,其中一个是

test.cc:15:17: error: no matching constructor for initialization of 'vector<int>'
vector<int> hello{1, 2, 3, 4, 5, 6, 7, 8};

好的,我需要一个支持C ++ 11的C ++库。

clang++ -std=c++11 -stdlib=libc++ -o test test.cc 
test.cc:1:10: fatal error: 'algorithm' file not found
#include <algorithm>

我的解决方法是使用-I-L指向我手动编译的libc ++。

假设我将与之分享的人没有那个,但至少有XCode。我该怎么做才能使上面的代码变得复杂?当然OS X必须附带C ++ 11功能???

[编辑]

事实证明,自从我使用来自homwbrew的xcode安装llvm后,当我执行which clang时clang出现了。我认为来自自制软件的clang不会被符号链接到/usr/local/bin,但显然它确实如此。所以我想从中学到的经验(以前很多次)是永远不会假设RTFM!

2 个答案:

答案 0 :(得分:5)

最新的Xcode版本将clang和libc ++标头放在Xcode.app中。控制单击它并选择“显示包内容”以导航到此目录。

确保您的命令行clang与Xcode.app中的命令行相同:

$ which clang++

对我来说:

/Applications/Xcode.app/Contents/Developer/Toolchains/OSX10.8.xctoolchain/usr/bin/clang++ 

/Applications/Xcode.app/Contents/Developer/Toolchains/OSX10.8.xctoolchain/usr/lib/c++/v1

答案 1 :(得分:0)

OS X El Capitan 10.11.6(15G1004)

/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/