Force QtCreator to run “qmake” when building

后端 未结 4 2121
猫巷女王i
猫巷女王i 2021-02-06 03:33

In some of my projects I use some pre-build step(s) configured in the .pro file. So qmake will execute this step whenever it is activated.

Now in QtCreator,

相关标签:
4条回答
  • 2021-02-06 04:14

    I think your best option is customize your QtCreator .This can be done by write a plugin for QtCreator ,or you can change the souce code of a plugin named Qt4ProjectManager ,then build it for yourself . This might be complex ,however, can be a solution.

    0 讨论(0)
  • 2021-02-06 04:17

    What I've done is created a makefile that explicitly calls qmake. Of course, that means I have two makefiles, but in my project file, I have

    MAKEFILE = makefile_qt
    

    which means that the generated makefile will have that name.

    So, for the makefile I manually created, I have:

    default: 
        qmake;
        ${MAKE} -f makefile_qt;
    

    Then, from QtCreator, I just call the regular make, which will default to makefile. Or you can leave the Qt-generated makefile as is, and just call make -f makefile to call your manually created one. I forget which has precedence, makefile or Makefile, and I'm not sure if it is always the same.

    0 讨论(0)
  • 2021-02-06 04:19

    I'm using the following codes in my .pro file.

    QMAKE_CLEAN += ./Makefile
    

    This makes run qmake whenever executing clean.

    0 讨论(0)
  • 2021-02-06 04:24

    Another dirty hack but a little more flexible: On Linux/Mac add "touch yourprojectfile.pro" as a build step or assign an external tool call to sth. like touch "*.pro" run in your current projects working directory. When the pro file is altered (which is mimicked by touch) qmake is executed. Not much cleaner but the external tool plus hotkey solution is more flexible than adding qmake into the buildsteps of each an every project.

    Update: I finally found a completely satisfactory solution for this. In the pro file add:

      qmakeforce.target = dummy
      qmakeforce.commands = rm -f Makefile ##to force rerun of qmake
      qmakeforce.depends = FORCE
      PRE_TARGETDEPS += $$qmakeforce.target
      QMAKE_EXTRA_TARGETS += qmakeforce
    

    This deletes the generated Makefile an thus forces qmake to rerun for every build.

    0 讨论(0)
提交回复
热议问题