Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. Qt Creator and other tools
  4. How to build wxWidgetsets project using Qt Creator?
Forum Updated to NodeBB v4.3 + New Features

How to build wxWidgetsets project using Qt Creator?

Scheduled Pinned Locked Moved Solved Qt Creator and other tools
15 Posts 3 Posters 786 Views 2 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.
  • K Offline
    K Offline
    Kobid
    wrote on last edited by
    #3

    I don't need to because I have compiled wxWidgets using --disable-shared, this options come from wx-config --cflags --libs but it should be appended at the end for g++ and I don't know how to do it

    Christian EhrlicherC 1 Reply Last reply
    0
    • K Kobid

      I don't need to because I have compiled wxWidgets using --disable-shared, this options come from wx-config --cflags --libs but it should be appended at the end for g++ and I don't know how to do it

      Christian EhrlicherC Offline
      Christian EhrlicherC Offline
      Christian Ehrlicher
      Lifetime Qt Champion
      wrote on last edited by
      #4

      @Kobid said in How to build wxWidgetsets project using Qt Creator?:

      I don't need to because I have compiled wxWidgets using --disable-shared

      This just means you compiled wxwidgets as static lib. You have to link against them if you want to use symbols from there.

      Qt Online Installer direct download: https://download.qt.io/official_releases/online_installers/
      Visit the Qt Academy at https://academy.qt.io/catalog

      1 Reply Last reply
      2
      • K Offline
        K Offline
        Kobid
        wrote on last edited by
        #5

        Yes, all -L comes from wx-config shell, I think I don't need do this by my self, I mean I didn't have to in CodeBlocks, CodeLite and Visual Studio Code. I think problem is with args order. When I change this (this is how Qt Creator pass it to gcc) from:

        /bin/g++ -DQT_QML_DEBUG `/home/dibo/programowanie/wxWidgetsInstallGTK/bin/wx-config --cflags --libs` -g  CMakeFiles/SimpleBackupWX2.dir/SimpleBackupMain.cpp.o CMakeFiles/SimpleBackupWX2.dir/ZipProcess.cpp.o CMakeFiles/SimpleBackupWX2.dir/SimpleBackupApp.cpp.o -o SimpleBackupWX2
        

        to (I change it in console of course):

        /bin/g++ -DQT_QML_DEBUG -g  CMakeFiles/SimpleBackupWX2.dir/SimpleBackupMain.cpp.o CMakeFiles/SimpleBackupWX2.dir/ZipProcess.cpp.o CMakeFiles/SimpleBackupWX2.dir/SimpleBackupApp.cpp.o -o SimpleBackupWX2 `/home/dibo/programowanie/wxWidgetsInstallGTK/bin/wx-config --cflags --libs`
        

        then my project is compiling fine

        JonBJ 1 Reply Last reply
        0
        • K Offline
          K Offline
          Kobid
          wrote on last edited by Kobid
          #6

          For example, in Visual Studio Code this is how I'm preparing tasks.json which is responsible for building my wxWidgetsets project using g++ and it simply works and even debugging works in this IDE, I don't need to link anything, wx-config is the last argument:

          {
              "tasks": [
                  {
                      "type": "cppbuild",
                      "label": "C/C++: g++ kompiluj aktywny plik",
                      "command": "/usr/bin/g++",
                      "args": [
                          "-fdiagnostics-color=always",
                          "-g",
                          "${fileDirname}/**.cpp",
                          "-o",
                          "${fileDirname}/${fileBasenameNoExtension}",
                          "`/home/dibo/programowanie/wxWidgetsInstallGTK/bin/wx-config",
                          "--cflags",
                          "--libs`"
                      ],
                      "options": {
                          "cwd": "${fileDirname}"
                      },
                      "problemMatcher": [
                          "$gcc"
                      ],
                      "group": {
                          "kind": "build",
                          "isDefault": true
                      },
                      "detail": "Zadanie wygenerowane przez debuger."
                  }
              ],
              "version": "2.0.0"
          }
          
          1 Reply Last reply
          0
          • K Kobid

            Yes, all -L comes from wx-config shell, I think I don't need do this by my self, I mean I didn't have to in CodeBlocks, CodeLite and Visual Studio Code. I think problem is with args order. When I change this (this is how Qt Creator pass it to gcc) from:

            /bin/g++ -DQT_QML_DEBUG `/home/dibo/programowanie/wxWidgetsInstallGTK/bin/wx-config --cflags --libs` -g  CMakeFiles/SimpleBackupWX2.dir/SimpleBackupMain.cpp.o CMakeFiles/SimpleBackupWX2.dir/ZipProcess.cpp.o CMakeFiles/SimpleBackupWX2.dir/SimpleBackupApp.cpp.o -o SimpleBackupWX2
            

            to (I change it in console of course):

            /bin/g++ -DQT_QML_DEBUG -g  CMakeFiles/SimpleBackupWX2.dir/SimpleBackupMain.cpp.o CMakeFiles/SimpleBackupWX2.dir/ZipProcess.cpp.o CMakeFiles/SimpleBackupWX2.dir/SimpleBackupApp.cpp.o -o SimpleBackupWX2 `/home/dibo/programowanie/wxWidgetsInstallGTK/bin/wx-config --cflags --libs`
            

            then my project is compiling fine

            JonBJ Offline
            JonBJ Offline
            JonB
            wrote on last edited by JonB
            #7

            @Kobid
            If you want to figure out why the order of arguments matters, we could understand the command line better if we knew what the

            `/home/dibo/programowanie/wxWidgetsInstallGTK/bin/wx-config --cflags --libs`
            

            is returning, so we can compare the two actual, full command lines are, and hence how their behaviour differs.

            I don't know how, but there is probably a way to get qmake or cmake alter what order arguments are passed. It's a bit tricky as obviously you have a single "token" returning some mixture of arguments.

            Btw, do you need the --cflags argument to wx-config when you are producing the arguments for just the linker?

            1 Reply Last reply
            0
            • K Offline
              K Offline
              Kobid
              wrote on last edited by
              #8

              Ahh, sorry, you are right, this is what it is returning:

              -I/home/dibo/programowanie/wxWidgetsInstallGTK/lib/wx/include/gtk3-unicode-static-3.2 -I/home/dibo/programowanie/wxWidgetsInstallGTK/include/wx-3.2 -D_FILE_OFFSET_BITS=64 -D__WXGTK__ -pthread
              -L/home/dibo/programowanie/wxWidgetsInstallGTK/lib -pthread   /home/dibo/programowanie/wxWidgetsInstallGTK/lib/libwx_gtk3u_xrc-3.2.a /home/dibo/programowanie/wxWidgetsInstallGTK/lib/libwx_gtk3u_qa-3.2.a /home/dibo/programowanie/wxWidgetsInstallGTK/lib/libwx_baseu_net-3.2.a /home/dibo/programowanie/wxWidgetsInstallGTK/lib/libwx_gtk3u_html-3.2.a /home/dibo/programowanie/wxWidgetsInstallGTK/lib/libwx_gtk3u_core-3.2.a /home/dibo/programowanie/wxWidgetsInstallGTK/lib/libwx_baseu_xml-3.2.a /home/dibo/programowanie/wxWidgetsInstallGTK/lib/libwx_baseu-3.2.a -lgthread-2.0 -pthread -lX11 -lXxf86vm -lSM -lxkbcommon -lgtk-3 -lgdk-3 -lpangocairo-1.0 -latk-1.0 -lcairo-gobject -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lXtst -lpangoft2-1.0 -lpango-1.0 -lgobject-2.0 -lglib-2.0 -lharfbuzz -lfontconfig -lfreetype -lwxscintilla-3.2 -lexpat -lpcre2-32 -lpng -ljpeg -ltiff -ljbig -lz -lm
              
              JonBJ 1 Reply Last reply
              0
              • K Kobid

                Ahh, sorry, you are right, this is what it is returning:

                -I/home/dibo/programowanie/wxWidgetsInstallGTK/lib/wx/include/gtk3-unicode-static-3.2 -I/home/dibo/programowanie/wxWidgetsInstallGTK/include/wx-3.2 -D_FILE_OFFSET_BITS=64 -D__WXGTK__ -pthread
                -L/home/dibo/programowanie/wxWidgetsInstallGTK/lib -pthread   /home/dibo/programowanie/wxWidgetsInstallGTK/lib/libwx_gtk3u_xrc-3.2.a /home/dibo/programowanie/wxWidgetsInstallGTK/lib/libwx_gtk3u_qa-3.2.a /home/dibo/programowanie/wxWidgetsInstallGTK/lib/libwx_baseu_net-3.2.a /home/dibo/programowanie/wxWidgetsInstallGTK/lib/libwx_gtk3u_html-3.2.a /home/dibo/programowanie/wxWidgetsInstallGTK/lib/libwx_gtk3u_core-3.2.a /home/dibo/programowanie/wxWidgetsInstallGTK/lib/libwx_baseu_xml-3.2.a /home/dibo/programowanie/wxWidgetsInstallGTK/lib/libwx_baseu-3.2.a -lgthread-2.0 -pthread -lX11 -lXxf86vm -lSM -lxkbcommon -lgtk-3 -lgdk-3 -lpangocairo-1.0 -latk-1.0 -lcairo-gobject -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lXtst -lpangoft2-1.0 -lpango-1.0 -lgobject-2.0 -lglib-2.0 -lharfbuzz -lfontconfig -lfreetype -lwxscintilla-3.2 -lexpat -lpcre2-32 -lpng -ljpeg -ltiff -ljbig -lz -lm
                
                JonBJ Offline
                JonBJ Offline
                JonB
                wrote on last edited by
                #9

                @Kobid
                You have

                set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} `/home/dibo/programowanie/wxWidgetsInstallGTK/bin/wx-config --cflags --libs`")
                

                Those are intended to be C++ flags (compiler) and would naturally come early on the command line. I think you want the linker library flags to go into qmake's LIBS or target_link_libraries() for cmake, as @Christian-Ehrlicher said earlier. That would be placed at the end of the linker command line. I know nothing about this, but maybe --cflags only should be used to construct CMAKE_CXX_FLAGS while --libs only should be used to construct LIBS/target_link_libraries()?

                1 Reply Last reply
                1
                • K Offline
                  K Offline
                  Kobid
                  wrote on last edited by
                  #10

                  I thought so that I'll probably need to add all libs in my .pro / cmakelists manually, there is a lot of them, --libs did all of the work in other IDEs. Well, no time to waste, it will be long evening :D

                  JonBJ 1 Reply Last reply
                  0
                  • K Offline
                    K Offline
                    Kobid
                    wrote on last edited by Kobid
                    #11

                    But maybe there is some nasty workaround? For example in Visual Studio Code I also did a trick, I could not set this as one argument:

                    "args": [
                                    "-fdiagnostics-color=always",
                                    "-g",
                                    "${fileDirname}/**.cpp",
                                    //"${file}",
                                    "-o",
                                    "${fileDirname}/${fileBasenameNoExtension}",
                                    "`/home/dibo/programowanie/wxWidgetsInstallGTK/bin/wx-config --cflags --libs`",
                                ],
                    

                    That is because if VS detect space in JSON argument, it pass to gcc as quoted argument. That is why I splitted it to:

                    "`/home/dibo/programowanie/wxWidgetsInstallGTK/bin/wx-config",
                                   "--cflags",
                                   "--libs`"
                    
                    1 Reply Last reply
                    0
                    • K Kobid

                      I thought so that I'll probably need to add all libs in my .pro / cmakelists manually, there is a lot of them, --libs did all of the work in other IDEs. Well, no time to waste, it will be long evening :D

                      JonBJ Offline
                      JonBJ Offline
                      JonB
                      wrote on last edited by JonB
                      #12

                      @Kobid said in How to build wxWidgetsets project using Qt Creator?:

                      I thought so that I'll probably need to add all libs in my .pro / cmakelists manually, there is a lot of them, --libs did all of the work in other IDEs. Well, no time to waste, it will be long evening :D

                      I don't understand. If you can run a command from cmake/qmake to what goes in CMAKE_CXX_FLAGS why can't you do so for LIBS or target_link_libraries() in the same way? Instead of you saying you have to paste in manually. Oh, you mean just doing that has to be across many makefiles? For all I know there might eb a global way. You could wait to see if someone else replies.

                      1 Reply Last reply
                      0
                      • K Offline
                        K Offline
                        Kobid
                        wrote on last edited by Kobid
                        #13

                        Woooow!! I always thought that LIBS expect path to existing file etc. I didn't expect that it will accept shell command. I added this:

                        LIBS += `/home/dibo/programowanie/wxWidgetsInstallGTK/bin/wx-config --libs`
                        

                        And everything is working! App is building and running. Amazing, I can use now my favourite IDE. Thank you guys!!
                        This is my finall .pro file. I must check if I can do same in CMake because I don't know yet which build system I will use:

                        TEMPLATE = app
                        CONFIG += c++17
                        CONFIG -= app_bundle
                        CONFIG -= qt
                        
                        QMAKE_CXXFLAGS += `/home/dibo/programowanie/wxWidgetsInstallGTK/bin/wx-config --cflags`
                        
                        SOURCES += \
                                SimpleBackupApp.cpp \
                                SimpleBackupMain.cpp \
                                ZipProcess.cpp
                        
                        DISTFILES += \
                            SimpleBackupWx.pro.user
                        
                        HEADERS += \
                            SimpleBackupApp.h \
                            SimpleBackupMain.h \
                            ZipProcess.h
                        
                        INCLUDEPATH += /home/dibo/programowanie/wxWidgetsInstallGTK/include/wx-3.2
                        INCLUDEPATH += /home/dibo/programowanie/wxWidgetsInstallGTK/lib/wx/include/gtk3-unicode-static-3.2
                        
                        LIBS += `/home/dibo/programowanie/wxWidgetsInstallGTK/bin/wx-config --libs`
                        

                        But don't know why editor is still showing errors and don't recognize some wx classes and overloaded constructors. INCLUDEPATH is responsible for code completion or I must set paths to WX stricte in Qt Creator settings?
                        f32f74d2-54bb-4dc4-9b7a-9c44a07dce89-obraz.png

                        JonBJ 1 Reply Last reply
                        0
                        • K Kobid

                          Woooow!! I always thought that LIBS expect path to existing file etc. I didn't expect that it will accept shell command. I added this:

                          LIBS += `/home/dibo/programowanie/wxWidgetsInstallGTK/bin/wx-config --libs`
                          

                          And everything is working! App is building and running. Amazing, I can use now my favourite IDE. Thank you guys!!
                          This is my finall .pro file. I must check if I can do same in CMake because I don't know yet which build system I will use:

                          TEMPLATE = app
                          CONFIG += c++17
                          CONFIG -= app_bundle
                          CONFIG -= qt
                          
                          QMAKE_CXXFLAGS += `/home/dibo/programowanie/wxWidgetsInstallGTK/bin/wx-config --cflags`
                          
                          SOURCES += \
                                  SimpleBackupApp.cpp \
                                  SimpleBackupMain.cpp \
                                  ZipProcess.cpp
                          
                          DISTFILES += \
                              SimpleBackupWx.pro.user
                          
                          HEADERS += \
                              SimpleBackupApp.h \
                              SimpleBackupMain.h \
                              ZipProcess.h
                          
                          INCLUDEPATH += /home/dibo/programowanie/wxWidgetsInstallGTK/include/wx-3.2
                          INCLUDEPATH += /home/dibo/programowanie/wxWidgetsInstallGTK/lib/wx/include/gtk3-unicode-static-3.2
                          
                          LIBS += `/home/dibo/programowanie/wxWidgetsInstallGTK/bin/wx-config --libs`
                          

                          But don't know why editor is still showing errors and don't recognize some wx classes and overloaded constructors. INCLUDEPATH is responsible for code completion or I must set paths to WX stricte in Qt Creator settings?
                          f32f74d2-54bb-4dc4-9b7a-9c44a07dce89-obraz.png

                          JonBJ Offline
                          JonBJ Offline
                          JonB
                          wrote on last edited by
                          #14

                          @Kobid
                          You can right-click on an orange-underlined function and select something like "Go to definition" or "declaration". See what is there and whether it's the path to the included file you expected.

                          1 Reply Last reply
                          0
                          • K Offline
                            K Offline
                            Kobid
                            wrote on last edited by Kobid
                            #15

                            Ok. Finally solved everything. Checked compiler output and wx-config shell execution doesn't work in case of QMAKE_CXXFLAGS like it works in LIBS. So I changed this:

                            QMAKE_CXXFLAGS += `/home/dibo/programowanie/wxWidgetsInstallGTK/bin/wx-config --cflags`
                            

                            To what this command exactly return:

                            QMAKE_CXXFLAGS += -I/home/dibo/programowanie/wxWidgetsInstallGTK/lib/wx/include/gtk3-unicode-static-3.2 -I/home/dibo/programowanie/wxWidgetsInstallGTK/include/wx-3.2 -D_FILE_OFFSET_BITS=64 -D__WXGTK__ -pthread
                            

                            And now everything works perfectly, even code completion. Important -D__WXGTK__ was missed because gcc was called without what wx-config return

                            1 Reply Last reply
                            0
                            • K Kobid has marked this topic as solved on

                            • Login

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