QtCreator下的clang ++无法使用c ++ 11

时间:2013-02-07 10:51:22

标签: clang++

操作系统:OS X 10.8.1 QtCreator:2.6.2

命令行很好,但QtCreator无法编译代码。

#include <functional>
#include <iostream>
#include <memory>
#include <string>
#include <vector>

int main(int argc, const char * argv[])
{
    std::vector<std::string> strs{"yahoo", "haha"};
    for(auto const &data : strs){
        std::cout<<data<<std::endl;
    }

    std::vector<std::string> strs2 = std::move(strs);

    std::unique_ptr<int> A(new int(3));
    std::cout<<*A<<std::endl;

    return 0;
}

命令行:

clang++ -stdlib=libc++ -std=c++11 main.cpp -o test

QtCreator的编译器设置 http://www.flickr.com/photos/92283971@N04/8453188038/in/photostream

Qt .pro文件

TEMPLATE = app
CONFIG += console
CONFIG -= app_bundle
CONFIG -= qt

SOURCES += main.cpp

QMAKE_CXXFLAGS += -std=c++11 
QMAKE_CXXFLAGS += -stdlib=libc++

错误讯息:

  

clang:错误:-stdlib = libc ++的无效部署目标(需要   OS X 10.7或更高版本):*** [main.o]错误1

但我的操作系统编号为10.8.1

3 个答案:

答案 0 :(得分:4)

TEMPLATE = app
CONFIG += console
CONFIG -= app_bundle
CONFIG -= qt

SOURCES += main.cpp

LIBS += -stdlib=libc++

QMAKE_CXXFLAGS += -stdlib=libc++
QMAKE_CXXFLAGS += -std=c++11
QMAKE_CXXFLAGS += -mmacosx-version-min=10.7
QMAKE_LFLAGS += -mmacosx-version-min=10.7

我可以通过这个.pro文件编译代码 但是当你玩Qt库时会有警告

ld:警告:找不到选项'-F / Users / yyyy / Qt5.0.1 / 5.0.1 / clang_64 / qtbase / lib'的目录 经过一番研究,我发现这是Qt5的一个bug 如果您忽略此警告消息即使它很烦人也没关系

答案 1 :(得分:2)

经过一些研究,我发现错误信息可以通过添加来解决 .pro文件的标志

TEMPLATE = app
CONFIG += console
CONFIG -= app_bundle
CONFIG -= qt

SOURCES += main.cpp

QMAKE_CXXFLAGS += -stdlib=libc++
QMAKE_CXXFLAGS += -std=c++11
#QMAKE_CXXFLAGS += -mmacosx-version-min=10.7 #1
QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.7 #2

1和#2确实消除了错误消息

错误消息clang:错误:-stdlib = libc ++的无效部署目标(需要OS X 10.7或更高版本) 但它们也会生成另一条错误消息

ld:找不到架构x86_64的符号 clang:错误:链接器命令失败,退出代码为1(使用-v查看调用)

符号未找到,但我不知道我应该链接到哪个。?

答案 2 :(得分:0)

这似乎对我有用。

CONFIG + = c ++ 11

它在命令行中正确地放了-std = c ++ 11,并且我没有得到任何编译器或链接器错误。

使用Qt 5.2。