Jepessen
Jepessen

Reputation: 12415

Copy files before compilation

I've a master project with many sobprojects, that I compile using qmake.

In a sub-project I must copy some files before compilation (some header file). I've seen some command to perform operation before and after linking, but I'd like to know if it's possible to perform some shell operation before start compilation. I can't refer to them, but I must to copy them (don't ask why please, it's not my fault :-( ). Any suggestion?

Thanks in advance for your replies.

Upvotes: 3

Views: 1450

Answers (3)

Andreas Fester
Andreas Fester

Reputation: 36630

I also just played around with QMAKE_EXTRA_TARGETS to solve the question, but could not manage to get it done ;)

One other (simple) solution which might work for you is to wrap the call to gcc/g++: in the .pro file, set QMAKE_CXX=./g++Wrapper and in the g++Wrapper shell script, call the original compiler while doing anything you want before and after the call:

#!/bin/bash
DoWhateverYouWantBeforeCompilation
g++ $*
DoWhateverYouWantAfterCompilation

By evaluating the command line parameters, you could also restrict your actions to specific files.

Upvotes: 0

tomy
tomy

Reputation: 454

see my last answer on nearly the same question:

Copy some file to the build directory after compiling project with Qt

the only difference for you is to change in point 5:

POST_TARGETDEPS     += copyfiles ## copy files after source compilation

to:

PRE_TARGETDEPS     += copyfiles ## copy files before source compilation

when executing qmake there have to exist all files already in filesystem before

Upvotes: 3

jwernerny
jwernerny

Reputation: 7048

I think what you want to do can be accomplished with careful use of the QMAKE_EXTRA_COMPILERS and QMAKE_EXTRA_TARGETS variables. The Qt Labs article The Power of QMake gives a reasonable introduction to it. The ".commands" part of the extra compiler can be any arbitrary command, including a shell command.

The other suggestion I found in this e-mail exchange is to "... take a look at mkspecs/features/*.prf - especially those of moc and uic.." for other possible ways to do it.

Upvotes: 1

Related Questions