Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. [SOLVED]Make QtCreator, QMake and clang3.2 work with c++11
Forum Updated to NodeBB v4.3 + New Features

[SOLVED]Make QtCreator, QMake and clang3.2 work with c++11

Scheduled Pinned Locked Moved General and Desktop
28 Posts 3 Posters 32.3k Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • S Offline
    S Offline
    stereomatching
    wrote on last edited by
    #21

    Sorry, looks like I posted a wrong makefile
    This time I'm sure the target is 10.7
    "makefile":http://pastebin.com/SqG8hyPZ

    .pro
    @
    TEMPLATE = app
    CONFIG += console
    CONFIG -= app_bundle
    CONFIG -= qt
    #CONFIG += -stdlib=libc++

    SOURCES += main.cpp

    #QMAKE_LFLAGS += -nodefaultlibs /usr/lib/libstdc++.dylib /usr/lib/libgcc_s.1.dylib

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

    #LIBS += /usr/lib/libstdc++.dylib /usr/lib/libgcc_s.1.dylib

    @

    "error messages":http://pastebin.com/0RahN86i

    bq. If you have to add -stdlib=libc++, that means the current Qt installation uses libstdc++, and you won’t be able to compile anything with both Qt and libc++, unless you recompile Qt.

    How about Qt5?Do I need to add -stdlib=libc++ if it is Qt5?
    I would upgrade my projects to Qt5 if I could skip the pain of recompile

    Whatever, now the problem is how to make QtCreator could work with clang++
    and c++11.Command line can make the job done but the makefile generated
    by qmake can't compile.

    1 Reply Last reply
    0
    • S Offline
      S Offline
      stereomatching
      wrote on last edited by
      #22

      I give Qt5.0.1 a try, it has a same problem too
      But this is expectable since the codes have nothing
      to do with Qt but QtCreator and clang++.

      I install Qt5.0.1 and Qt4.8.4 on mac together
      Not sure this could be a problem or not

      .pro of Qt5
      @
      TEMPLATE = app
      CONFIG += console
      CONFIG -= app_bundle
      CONFIG -= qt
      CONFIG += c++11
      #CONFIG += -stdlib=libc++

      SOURCES += main.cpp

      #QMAKE_LFLAGS += -nodefaultlibs /usr/lib/libstdc++.dylib /usr/lib/libgcc_s.1.dylib

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

      #LIBS += /usr/lib/libstdc++.dylib /usr/lib/libgcc_s.1.dylib
      @

      "makefile":http://pastebin.com/76PUzw2u

      "error messages":http://pastebin.com/WTWrwm8d

      1 Reply Last reply
      0
      • S Offline
        S Offline
        stereomatching
        wrote on last edited by
        #23

        I am thinking of using gcc4.7 to replace clang3.2
        Compile with gcc come from the osx is fine with Qt4.8.4

        But Qt5.0.1 would generate a warning message no matter it is
        clang or gcc

        ld: warning: directory not found for option '-F/Users/yyyy/Qt5.0.1/5.0.1/clang_64/qtbase/lib'

        1 Reply Last reply
        0
        • S Offline
          S Offline
          stereomatching
          wrote on last edited by
          #24

          I download gcc4.8 by macport

          //install gcc48
          sudo port install gcc48

          //set gcc48 as the default compiler
          sudo port select --set gcc mp-gcc48

          set the compiler under /opt/local/bin/g++ for Qt5.0.1

          .pro file

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

          SOURCES += main.cpp

          QMAKE_CXXFLAGS += -std=c++0x
          @

          codes
          @
          //
          // main.cpp
          // yyyy
          //
          // Created by yyyy on 2/6/13.
          // Copyright (c) 2013 yyyy. All rights reserved.
          //

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

          template<typename T>
          inline void print_comma_separated_list(T value)
          {
          std::cout<<value<<std::endl;
          }

          template<typename First,typename ... Rest>
          void print_comma_separated_list(First first,Rest ... rest)
          {
          std::cout<<first<<",";
          print_comma_separated_list(rest...);
          }

          constexpr int multiply_two(int a)
          {
          return a * 2;
          }

          int main()
          {

          // insert code here...
          std::cout << "Hello, World!"<<std::endl;
          
          auto func = [](){ std::cout << "hahaha\n"; };
          func();
          
          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);
          for(auto const &data : strs2){
              std::cout<<data<<std::endl;
          }
          
          std::unique_ptr<int> A(new int(3));
          std::cout<<*A<<std::endl;
          
          print_comma_separated_list(32, "444", 34.564564, "lalamimilolipo");
          
          return 0;
          

          }
          @

          without any warning or errors
          but it will pop out warning if I use Qt5

          ld: warning: directory not found for option ‘-F/Users/yyyy/Qt5.0.1/5.0.1/clang_64/qtbase/lib’

          1 Reply Last reply
          0
          • A Offline
            A Offline
            alexisdm
            wrote on last edited by
            #25

            With clang, the linker doesn't get the -stdlib=libc++ option, so it was trying to link with libstdc++:
            @clang++ -headerpad_max_install_names -mmacosx-version-min=10.6 -o test01 main.o @

            Try adding:
            @LIBS += -stdlib=libc++ -std=c++11@

            I'm not sure if -std=c++11 is needed for the linker.

            1 Reply Last reply
            0
            • S Offline
              S Offline
              stereomatching
              wrote on last edited by
              #26

              [quote author="alexisdm" date="1360328228"]With clang, the linker doesn't get the -stdlib=libc++ option, so it was trying to link with libstdc++:
              @clang++ -headerpad_max_install_names -mmacosx-version-min=10.6 -o test01 main.o @

              Try adding:
              @LIBS += -stdlib=libc++ -std=c++11@

              I'm not sure if -std=c++11 is needed for the linker.[/quote]

              Thanks, the problem finally solved(half)

              The .pro file
              @
              TEMPLATE = app
              CONFIG += console
              CONFIG -= app_bundle
              CONFIG -= qt
              #CONFIG += c++11

              SOURCES += main.cpp

              LIBS += -stdlib=libc++ #don't need -std=c++11

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

              Not done yet, we have to change the parameters of the makefile too

              @
              ####### Compiler, tools and options

              CC = clang
              CXX = clang++
              DEFINES =
              CFLAGS = -pipe -mmacosx-version-min=10.7 -O2 -Wall -W -fPIE $(DEFINES)
              CXXFLAGS = -pipe -mmacosx-version-min=10.7 -stdlib=libc++ -std=c++11 -mmacosx-version-min=10.7 -O2 -Wall -W -fPIE $(DEFINES)
              INCPATH = -I../../../yyyy/Qt5.0.1/5.0.1/clang_64/mkspecs/macx-clang -I.
              LINK = clang++
              LFLAGS = -headerpad_max_install_names -mmacosx-version-min=10.7
              LIBS = $(SUBLIBS) -stdlib=libc++
              AR = ar cq
              RANLIB = ranlib -s
              QMAKE = /Users/yyyy/Qt5.0.1/5.0.1/clang_64/bin/qmake
              @

              change 10.6 to 10.7 since
              QMAKE_CXXFLAGS += -mmacosx-version-min=10.7 or
              QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.7
              would not change the mmacosx-version-min to 10.7

              Thanks for your big helps, If I am familiar with makefile
              This problem could be solved faster

              But it would generate the warning message
              ld: warning: directory not found for option '-F/Users/yyyy/Qt5.0.1/5.0.1/clang_64/qtbase/lib'

              After I go into the path and type ls -al, I really don't have anything called /qtbase/lib

              1 Reply Last reply
              0
              • S Offline
                S Offline
                stereomatching
                wrote on last edited by
                #27

                Do some change on .pro file

                @
                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
                @

                Don't need to alter the makefile by hand

                The warning still exist, do I need to solve the warning message?
                Or I could simply ignore it?

                Oh man, I hope that the support of c++11 could become mature ASAP
                then all of us don't need to go through so many trouble
                when we want to use it.

                1 Reply Last reply
                0
                • S Offline
                  S Offline
                  stereomatching
                  wrote on last edited by
                  #28

                  According to the sites
                  "Qt bug":https://bugreports.qt-project.org/browse/QTBUG-28336

                  This warning could be ignored, let us hope that Qt5.1 will fixe this bug

                  1 Reply Last reply
                  0

                  • Login

                  • Login or register to search.
                  • First post
                    Last post
                  0
                  • Categories
                  • Recent
                  • Tags
                  • Popular
                  • Users
                  • Groups
                  • Search
                  • Get Qt Extensions
                  • Unsolved