如何将GSL与C ++ 11和新STL一起使用?

时间:2013-03-28 09:30:37

标签: c++ xcode c++11 gsl

我正在设置一个新的C ++项目(在Xcode 4.6中),我非常希望使用新的C ++ 11标准(lambda表达式,auto等)的功能。我正试图(静态地)将Gnu科学图书馆(GSL)链接到这个项目中,使用Darson对this上一个问题的回答。但是,他的回答建议将编译器更改为LLVM GCC 4.2,它不支持新的C ++ 11功能。

当我更改为默认的Apple LLVM编译器4.2时,构建失败,我得到一长串错误,Xcode追溯到新“libc ++”标题中的语义问题(未声明的标识符,未知类型名称等) “STL。

所以我的问题是:有没有人找到在新的C ++ 11标准中使用GSL的方法?它不一定要在Xcode中,我很乐意使用任何(UNIX) )IDE或构建环境。

1 个答案:

答案 0 :(得分:1)

我已经能够解决自己的问题了,我想我会与那些可能正在努力解决这个问题的人分享。

就像我怀疑的那样,问题出现了,因为我的GSL安装(来自macports)是针对“旧”STL(libstdc ++)构建的。因此,我的解决方案是针对“新”STL(libc ++)重新编译GSL。这可以通过解压缩源并运行

来轻松完成
./configure CC=clang CFLAGS="-stdlib=libc++" LDFLAGS="-stdlib=libc++"

我还添加了--disable-shared来构建静态库,并--prefix=...来设置构建路径。然后剩下的就是运行makemake install