Question

Have a SomeLib.pro file that contains:

CONFIG  += debug
TEMPLATE = lib
TARGET = SomeLib
..

Then in a dependent SomeApp.pro:

..
debug:LIBS += -lSomeLib_debug
..

How can I force SomeApp to build if I touched SomeLib in qmake?

Was it helpful?

Solution

It's ugly because you need to give the exact library file name, but this should work:

TARGETDEPS += libfoo.a

OTHER TIPS

QT Creator will do the work if you click "Add library..." in the context menu of the project that should include the library.

These variables are configured automatically for you:

  • LIBS
  • INCLUDEPATH
  • DEPENDPATH
  • PRE_TARGETDEPS

See also http://doc.qt.digia.com/qtcreator-2.1/creator-project-qmake-libraries.html

In reply to Zahir's comment, it's perhaps worth pointing out that stating this dependency in qmake files is unnecessary if using DLLs, but is essential if your exe depends on a static library.

qmake does not provide this ability.

Instead, put your app and lib in subdirectories, then create a Makefile in their parent directory that looks something like this:

all: FRC
    cd Somelib && qmake && $(MAKE) 
    cd SomeApp && qmake && $(MAKE)

FRC:

Then always run make from this directory.

I used:

POST_TARGETDEPS += c:/open-en/lib/win32mingw/libosal_based.a

It works, but is clumsy since it is necessary specify full path to library, which is different for every operating system/compiler.

surely that can't be possible, you are talking about using qmake to do a reverse dependency lookup? so what u want is for it to build app B (and any other app dependent on library A) after you've made a change to library A?

that's a bit like saying recompile all visual basic apps if vbrun300.dll is updated?

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top