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. How to pass an argument to .pri file?
Forum Updated to NodeBB v4.3 + New Features

How to pass an argument to .pri file?

Scheduled Pinned Locked Moved Solved General and Desktop
18 Posts 5 Posters 1.8k 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.
  • U Offline
    U Offline
    user2301
    wrote on last edited by user2301
    #1

    I have a .pri file in the QT application, where it gets the git lighweight tag from the system.

    This is the .pri file.

    Version = $$system(git describe --tags)

    I have a docker container created for this application. This container do not have git. I do not want to install git in the container just to get the commit tag.

    I want to use the predefined CI/CD environment variable in gitlab-ci.yml. And pass this CI/CD variable to .pri file or set the CI/CD variable as system variable. Is it possible to pass CI/CD variable as an argument to .pri file? Or get the environment variable from system in .pri file?

    raven-worxR 1 Reply Last reply
    0
    • U user2301

      I have a .pri file in the QT application, where it gets the git lighweight tag from the system.

      This is the .pri file.

      Version = $$system(git describe --tags)

      I have a docker container created for this application. This container do not have git. I do not want to install git in the container just to get the commit tag.

      I want to use the predefined CI/CD environment variable in gitlab-ci.yml. And pass this CI/CD variable to .pri file or set the CI/CD variable as system variable. Is it possible to pass CI/CD variable as an argument to .pri file? Or get the environment variable from system in .pri file?

      raven-worxR Offline
      raven-worxR Offline
      raven-worx
      Moderators
      wrote on last edited by raven-worx
      #2

      @user2301
      since a .pri file is just included (in-place) it has access to all the variables defined in the parent pro/pri file

      --- SUPPORT REQUESTS VIA CHAT WILL BE IGNORED ---
      If you have a question please use the forum so others can benefit from the solution in the future

      U 1 Reply Last reply
      2
      • raven-worxR raven-worx

        @user2301
        since a .pri file is just included (in-place) it has access to all the variables defined in the parent pro/pri file

        U Offline
        U Offline
        user2301
        wrote on last edited by
        #3

        @raven-worx Is it not possible to directly access the environment variable set on the system?
        Or what is the syntax to access system environment variable?

        For example like this.
        Version = $$system(CI_COMMIT_TAG)

        raven-worxR 1 Reply Last reply
        0
        • U user2301

          @raven-worx Is it not possible to directly access the environment variable set on the system?
          Or what is the syntax to access system environment variable?

          For example like this.
          Version = $$system(CI_COMMIT_TAG)

          raven-worxR Offline
          raven-worxR Offline
          raven-worx
          Moderators
          wrote on last edited by
          #4

          @user2301 said in How to pass an argument to .pri file?:

          Or what is the syntax to access system environment variable?

          $$(VARNAME)

          --- SUPPORT REQUESTS VIA CHAT WILL BE IGNORED ---
          If you have a question please use the forum so others can benefit from the solution in the future

          U 1 Reply Last reply
          3
          • raven-worxR raven-worx

            @user2301 said in How to pass an argument to .pri file?:

            Or what is the syntax to access system environment variable?

            $$(VARNAME)

            U Offline
            U Offline
            user2301
            wrote on last edited by
            #5

            @raven-worx Okay thanks. If the value of variable is some batch file path or powershelll script path, will the batch file will be executed in .pri file?

            raven-worxR 1 Reply Last reply
            0
            • U user2301

              @raven-worx Okay thanks. If the value of variable is some batch file path or powershelll script path, will the batch file will be executed in .pri file?

              raven-worxR Offline
              raven-worxR Offline
              raven-worx
              Moderators
              wrote on last edited by
              #6

              @user2301
              if you call with with the system command

              --- SUPPORT REQUESTS VIA CHAT WILL BE IGNORED ---
              If you have a question please use the forum so others can benefit from the solution in the future

              U 1 Reply Last reply
              0
              • raven-worxR raven-worx

                @user2301
                if you call with with the system command

                U Offline
                U Offline
                user2301
                wrote on last edited by user2301
                #7

                @raven-worx I also tried calling directly the script in .pri file. But it did not work and my build got stuck without showing any error.

                $$system($$PWD/env.ps1)
                
                jsulmJ raven-worxR 2 Replies Last reply
                0
                • U user2301

                  @raven-worx I also tried calling directly the script in .pri file. But it did not work and my build got stuck without showing any error.

                  $$system($$PWD/env.ps1)
                  
                  jsulmJ Offline
                  jsulmJ Offline
                  jsulm
                  Lifetime Qt Champion
                  wrote on last edited by
                  #8

                  @user2301 said in How to pass an argument to .pri file?:

                  $$system($$PWD/env.ps1)

                  Shouldn't it be

                  $$system($$(PWD)/env.ps1)
                  

                  ?

                  https://forum.qt.io/topic/113070/qt-code-of-conduct

                  1 Reply Last reply
                  0
                  • U user2301

                    @raven-worx I also tried calling directly the script in .pri file. But it did not work and my build got stuck without showing any error.

                    $$system($$PWD/env.ps1)
                    
                    raven-worxR Offline
                    raven-worxR Offline
                    raven-worx
                    Moderators
                    wrote on last edited by raven-worx
                    #9

                    @user2301 said in How to pass an argument to .pri file?:

                    $$system($$PWD/env.ps1)

                    what is this supposed to do actually?
                    It calles the powershell script in the location next to the .pri file.
                    Assuming by the name of the script do you expect it to set some env variables which are used in later build steps? That wont work.

                    --- SUPPORT REQUESTS VIA CHAT WILL BE IGNORED ---
                    If you have a question please use the forum so others can benefit from the solution in the future

                    U 1 Reply Last reply
                    0
                    • SGaistS Offline
                      SGaistS Offline
                      SGaist
                      Lifetime Qt Champion
                      wrote on last edited by
                      #10

                      Hi,

                      @user2301 said in How to pass an argument to .pri file?:

                      CI_COMMIT_TAG

                      There might be some over engineering here. Since these are environment variables that you want to use, why not use them as they are meant to in your .pri file ? Basically: Version = $$(CI_COMMIT_TAG) ?

                      Interested in AI ? www.idiap.ch
                      Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

                      1 Reply Last reply
                      1
                      • raven-worxR raven-worx

                        @user2301 said in How to pass an argument to .pri file?:

                        $$system($$PWD/env.ps1)

                        what is this supposed to do actually?
                        It calles the powershell script in the location next to the .pri file.
                        Assuming by the name of the script do you expect it to set some env variables which are used in later build steps? That wont work.

                        U Offline
                        U Offline
                        user2301
                        wrote on last edited by
                        #11

                        @raven-worx Yes. This script sets the environment variable to be used later in the build step. The script sets the version of the build to be used in Qt application, which is obtained from the gitlab CI/CD environment variable.
                        This is the script.

                        if (!$env:CI_COMMIT_TAG) {$env:CI_TAG=$env:CI_COMMIT_SHORT_SHA} else {$env:CI_TAG=$env:CI_COMMIT_TAG}
                        

                        So is it possible to use such if else statements in the .pri?

                        1 Reply Last reply
                        0
                        • SGaistS Offline
                          SGaistS Offline
                          SGaist
                          Lifetime Qt Champion
                          wrote on last edited by
                          #12

                          @user2301 you are invoking qmake within your .gitlab-ci.yml file, correct ?

                          Interested in AI ? www.idiap.ch
                          Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

                          U 1 Reply Last reply
                          0
                          • SGaistS SGaist

                            @user2301 you are invoking qmake within your .gitlab-ci.yml file, correct ?

                            U Offline
                            U Offline
                            user2301
                            wrote on last edited by
                            #13

                            @SGaist Yes. I am invoking qmake from gitlab-ci.yml

                            - qmake app.pro -spec win32-msvc "CONFIG+=release" "CONFIG+=qml_release" "CONFIG+=dsp"
                            - jom qmake_all
                            - jom
                            - jom install
                            
                            1 Reply Last reply
                            0
                            • SGaistS Offline
                              SGaistS Offline
                              SGaist
                              Lifetime Qt Champion
                              wrote on last edited by
                              #14

                              And you would like to use that CI_TAG environment variable in your .pri file, correct ?

                              Interested in AI ? www.idiap.ch
                              Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

                              U 1 Reply Last reply
                              0
                              • SGaistS SGaist

                                And you would like to use that CI_TAG environment variable in your .pri file, correct ?

                                U Offline
                                U Offline
                                user2301
                                wrote on last edited by
                                #15

                                @SGaist Yes. Since I am using docker container, I do not have git installed inside the container, I have two use cases.

                                1. to use git describe --tags for only local build.
                                2. to use CI_COMMIT_TAG for gitlab CI build.

                                These two checks I need to do in .pri file, By either calling a script or writing conditional statements.
                                So something like this:

                                if $$(CI_Build)==true 
                                GIT_VERSION = $$(CI_TAG)
                                else 
                                GIT_VERSION = $$system(git describe --tags)
                                
                                1 Reply Last reply
                                0
                                • SGaistS Offline
                                  SGaistS Offline
                                  SGaist
                                  Lifetime Qt Champion
                                  wrote on last edited by
                                  #16

                                  Try something like:

                                  GIT_VERSION = $$(CI_TAG)
                                  isEmpty(GIT_VERSION){
                                      GIT_VERSION = $$system(git describe --tags)
                                  }
                                  ``

                                  Interested in AI ? www.idiap.ch
                                  Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

                                  U 1 Reply Last reply
                                  1
                                  • SGaistS SGaist

                                    Try something like:

                                    GIT_VERSION = $$(CI_TAG)
                                    isEmpty(GIT_VERSION){
                                        GIT_VERSION = $$system(git describe --tags)
                                    }
                                    ``
                                    U Offline
                                    U Offline
                                    user2301
                                    wrote on last edited by
                                    #17

                                    @SGaist Okay Thanks a lot. It works.

                                    aha_1980A 1 Reply Last reply
                                    1
                                    • U user2301

                                      @SGaist Okay Thanks a lot. It works.

                                      aha_1980A Offline
                                      aha_1980A Offline
                                      aha_1980
                                      Lifetime Qt Champion
                                      wrote on last edited by
                                      #18

                                      @user2301 Then please mark this topic as SOLVED too. Thanks!

                                      Qt has to stay free or it will die.

                                      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