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. cmake tests and libs separate view in qt creator
Forum Updated to NodeBB v4.3 + New Features

cmake tests and libs separate view in qt creator

Scheduled Pinned Locked Moved Unsolved Qt Creator and other tools
21 Posts 4 Posters 3.2k 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
    Sandon
    wrote on last edited by Sandon
    #3

    I don't know if I have understood what you're saying. I'll try to clarify:

    My repo is divided in N libraries: libA libB libC .. libN
    Each lib has (at least) two sub-directories: src and tests.
    Each lib has a CMakeLists.txt file with inside add_subdirectory of the src and tests folders.
    The tests folder contains more directories, for different test executables, each of them containing a CMakeLists.txt file.

    I prefer to have tests for libX inside the libX tests subfolder as in this case the library is self-contained.
    In this way I can just do whatever I want: open a single lib as a project, open all of them or open them as a group in the particular view I need for the moment. This is because, visually, it's much better to have some libs/tests organized in a particular way.

    Again, with qmake, there was no problem and I could really customize everything as I wanted. Cmake should have been an improvement, but if this simple thing is not possible , I'm starting to have some doubts about this switch.

    A visual view of my repo:

    project/
    ├── CMakeLists.txt
    ├── libA/
    │   ├── CMakeLists.txt
    │   ├── src/
    │   └── tests/
    │       ├── test1/
    │       ├── test2/
    │       └── CMakeLists.txt
    ├── libB/
    │   ├── CMakeLists.txt
    │   ├── src/
    │   └── tests/
    │       ├── test1/
    │       ├── test2/
    │       └── CMakeLists.txt
    └── ...other libs...
    
    

    what I'd like to see is something like this:

    libA
    libB
    tests
    

    then you can click on tests and see the other tests.
    Instead, right now, I just see:

    libA
    libB
    

    and the tests are inside those folders

    Edit2: add_custom_target -> didn't know this, it looks like what I need

    1 Reply Last reply
    0
    • cristian-adamC Online
      cristian-adamC Online
      cristian-adam
      wrote on last edited by
      #4

      https://bugreports.qt.io/browse/QTCREATORBUG-28873 has a suggestion for using the FOLDER property on targets.

      This would allow customisation of the project tree in regards where targets are located.

      In this case the obvious folder for tests would be tests.

      A future version of Qt Creator will be having this feature, so make sure to watch that bug report! 😀

      S 1 Reply Last reply
      1
      • cristian-adamC cristian-adam

        https://bugreports.qt.io/browse/QTCREATORBUG-28873 has a suggestion for using the FOLDER property on targets.

        This would allow customisation of the project tree in regards where targets are located.

        In this case the obvious folder for tests would be tests.

        A future version of Qt Creator will be having this feature, so make sure to watch that bug report! 😀

        S Offline
        S Offline
        Sandon
        wrote on last edited by Sandon
        #5

        @cristian-adam thank you, I hope there's a workaround though ;)

        1 Reply Last reply
        0
        • S Offline
          S Offline
          Sandon
          wrote on last edited by Sandon
          #6

          I am trying to play with add_custom_target but no real progress so far. I just succeeded in adding external files grouped inside a custom target (using add_custom_target(tests SOURCES myfolder/file.txt) . Does anyone has ever used this function ?

          1 Reply Last reply
          0
          • S Offline
            S Offline
            Sandon
            wrote on last edited by
            #7

            Still trying wih add_custom_target, but no way to make it work

            1 Reply Last reply
            0
            • Christian EhrlicherC Offline
              Christian EhrlicherC Offline
              Christian Ehrlicher
              Lifetime Qt Champion
              wrote on last edited by
              #8

              I don't see what add_custom_target should have to do with how QtCreator is showing the targets... You have to wait until QtCreator supports the SOURCES property.

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

              S 1 Reply Last reply
              0
              • Christian EhrlicherC Christian Ehrlicher

                I don't see what add_custom_target should have to do with how QtCreator is showing the targets... You have to wait until QtCreator supports the SOURCES property.

                S Offline
                S Offline
                Sandon
                wrote on last edited by Sandon
                #9

                @Christian-Ehrlicher Well, you'll never know. Many times there are tricks to make things work.
                I was also thinking to open two projects, one for the libraries and another for the tests, but again, it does not feel like the right approach.

                It is really disappointing not to have this simple feature.

                Christian EhrlicherC 1 Reply Last reply
                0
                • S Sandon

                  @Christian-Ehrlicher Well, you'll never know. Many times there are tricks to make things work.
                  I was also thinking to open two projects, one for the libraries and another for the tests, but again, it does not feel like the right approach.

                  It is really disappointing not to have this simple feature.

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

                  @Sandon said in cmake tests and libs separate view in qt creator:

                  this simple feature.

                  Feel free to provide a patch when you are so confident that this is a simple task. QtCreator is open source.

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

                  S 1 Reply Last reply
                  0
                  • Christian EhrlicherC Christian Ehrlicher

                    @Sandon said in cmake tests and libs separate view in qt creator:

                    this simple feature.

                    Feel free to provide a patch when you are so confident that this is a simple task. QtCreator is open source.

                    S Offline
                    S Offline
                    Sandon
                    wrote on last edited by
                    #11

                    @Christian-Ehrlicher I wish had more time, but yes.. good reply

                    1 Reply Last reply
                    0
                    • cristian-adamC Online
                      cristian-adamC Online
                      cristian-adam
                      wrote on last edited by
                      #12

                      CMake already has the SOURCES property, you just need to use cmake generator expressions to use it.

                      Take this example:

                      cmake_minimum_required(VERSION 3.16)
                      
                      project(WidgetsApp VERSION 0.1 LANGUAGES CXX)
                      
                      add_subdirectory(app)
                      add_subdirectory(tests)
                      
                      add_custom_target(MyApp
                          SOURCES $<LIST:TRANSFORM,$<LIST:FILTER,$<TARGET_PROPERTY:WidgetsApp,SOURCES>,EXCLUDE,.*_autogen/.*>,PREPEND,app/>
                      )
                      

                      global_custom_targets.png

                      Christian EhrlicherC 1 Reply Last reply
                      3
                      • cristian-adamC cristian-adam

                        CMake already has the SOURCES property, you just need to use cmake generator expressions to use it.

                        Take this example:

                        cmake_minimum_required(VERSION 3.16)
                        
                        project(WidgetsApp VERSION 0.1 LANGUAGES CXX)
                        
                        add_subdirectory(app)
                        add_subdirectory(tests)
                        
                        add_custom_target(MyApp
                            SOURCES $<LIST:TRANSFORM,$<LIST:FILTER,$<TARGET_PROPERTY:WidgetsApp,SOURCES>,EXCLUDE,.*_autogen/.*>,PREPEND,app/>
                        )
                        

                        global_custom_targets.png

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

                        @cristian-adam this looks more like a hack to me... 🙂

                        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
                        0
                        • Christian EhrlicherC Offline
                          Christian EhrlicherC Offline
                          Christian Ehrlicher
                          Lifetime Qt Champion
                          wrote on last edited by Christian Ehrlicher
                          #14

                          I just saw that I mixed SOURCES And FOLDERS properties - I meant FOLDERS, sorry for the confusion.
                          https://cmake.org/cmake/help/latest/prop_tgt/FOLDER.html

                          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
                          1
                          • S Offline
                            S Offline
                            Sandon
                            wrote on last edited by Sandon
                            #15

                            @Christian-Ehrlicher thank you very much! This is quite new to me, so it will take time to understand and rewrite it in a way that works for what I need.. but it could be the "hack/trick" I was looking for.

                            Edit: after reading it carefully, I am still not sure if this applies to my case. Going to read the documentation. Basically I will need a way to read specific CMakeFiles and associate them to a specific target.

                            1 Reply Last reply
                            0
                            • cristian-adamC Online
                              cristian-adamC Online
                              cristian-adam
                              wrote on last edited by
                              #16

                              Regarding FOLDER, yes, I'll have to fix https://bugreports.qt.io/browse/QTCREATORBUG-28873 first.

                              Currently Qt Creator is abusing FOLDER to make a target runnable. See https://doc.qt.io/qtcreator/creator-run-settings.html#cmake-run-targets

                              Well, actually, I could keep the qtc_runnable special handling, and have original intent. One wouldn't be able to have both.

                              1 Reply Last reply
                              1
                              • S Offline
                                S Offline
                                Sandon
                                wrote on last edited by
                                #17

                                @cristian-adam thank you for your reply.

                                Do you think is it possible to achieve what I asked with current Qt creator capabilities?

                                cristian-adamC 1 Reply Last reply
                                0
                                • S Sandon

                                  @cristian-adam thank you for your reply.

                                  Do you think is it possible to achieve what I asked with current Qt creator capabilities?

                                  cristian-adamC Online
                                  cristian-adamC Online
                                  cristian-adam
                                  wrote on last edited by
                                  #18

                                  @Sandon said in cmake tests and libs separate view in qt creator:

                                  @cristian-adam thank you for your reply.

                                  Do you think is it possible to achieve what I asked with current Qt creator capabilities?

                                  Nope. I have a fix for https://bugreports.qt.io/browse/QTCREATORBUG-28873, you can take an artifact from https://github.com/cristianadam/qt-creator/actions/runs/9979288965 and try it out.

                                  After the code review is done, you can have a Qt Creator 15 snapshot from https://download.qt.io/development_releases/qtcreator/ when they are available.

                                  1 Reply Last reply
                                  0
                                  • cristian-adamC Online
                                    cristian-adamC Online
                                    cristian-adam
                                    wrote on last edited by
                                    #19

                                    Alternatively you can fork Qt Creator on github, apply the patch from https://codereview.qt-project.org/c/qt-creator/qt-creator/+/576805 and push a release tag on github.

                                    This will get you a Qt Creator 14 release with the patch in.

                                    1 Reply Last reply
                                    0
                                    • cristian-adamC Online
                                      cristian-adamC Online
                                      cristian-adam
                                      wrote on last edited by
                                      #20

                                      Qt Creator is open source, Qt Creator is written in C++, and you don't have to do much in order to get a build on GitHub.

                                      1 Reply Last reply
                                      0
                                      • S Offline
                                        S Offline
                                        Sandon
                                        wrote on last edited by
                                        #21

                                        @cristian-adam that's awesome mate, great job. I look forward to try it out. Thanks again!

                                        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