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