Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt
  • 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
Qt 6.12 LTS is out! See what's new in the release blog

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

Scheduled Pinned Locked Moved General and Desktop
28 Posts 3 Posters 39.7k 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.
  • ? Offline
    ? Offline
    A Former User
    wrote on last edited by
    #19

    [quote author="alexisdm" date="1360245040"]Try this: http://qt-project.org/forums/viewthread/17150[/quote]

    According to the informations of the link, I add
    QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.7
    just as the previous post

    But I get another error message
    clang: error: linker command failed with exit code 1 (use -v to see invocation)

    The contents of the makefile
    "makefile":http://pastebin.com/CaiFdNtF

    Apparently, it do not link to the proper library
    Where is the proper library?

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

      According to the generated makefile, the target is still 10.4.
      Can you show the compilation output to see how clang++ is invoked ?

      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.

      1 Reply Last reply
      0
      • ? Offline
        ? Offline
        A Former User
        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
        • ? Offline
          ? Offline
          A Former User
          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
          • ? Offline
            ? Offline
            A Former User
            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
            • ? Offline
              ? Offline
              A Former User
              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
                • ? Offline
                  ? Offline
                  A Former User
                  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
                  • ? Offline
                    ? Offline
                    A Former User
                    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
                    • ? Offline
                      ? Offline
                      A Former User
                      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
                      • Unsolved