【问题标题】:clang++ under QtCreator can't work with c++11QtCreator下的clang++不能用c++11
【发布时间】:2013-02-07 10:51:22
【问题描述】:

操作系统: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 或更高版本)make: *** [main.o] 错误 1

但我的操作系统号是 10.8.1

【问题讨论】:

    标签: clang++


    【解决方案1】:
    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的一个错误 即使它很烦人,您也可以忽略此警告消息

    【讨论】:

    • 感谢您的帮助!你能链接到 Qt 错误吗?
    【解决方案2】:

    这似乎对我有用。

    配置 += c++11

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

    使用 Qt 5.2。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-08
      • 1970-01-01
      • 2012-05-11
      • 1970-01-01
      • 2014-05-12
      • 2015-03-07
      • 1970-01-01
      相关资源
      最近更新 更多