tags:

views:

3054

answers:

4

We are trying to use the MITK library with Qt on Linux.

Unfortunately MITK has no install functionality and it also depends on ITK and VTK. So we end up with header files scattered in many directories.

We would like to specify the list of directories to add in the include path in an environment variable like this : INCPATH+=$MITK_INCLUDE_PATH. But this doesn't seem to work.

How could we achieve this ? Is there a better way ?

A: 

i dont know but maybe you can try to write like

INCPATH+=%MITK_INCLUDE_PATH%

in windows, generally it is like that..

but i did not try.

ufukgun
It is on linux.
chmike
Actually it doesn't work on windows either (at least it didn't work for me).
frgtn
+2  A: 

Have you tried adding:

INCLUDEPATH += <the path to the MITK headers>

in your project's .pro file ?

And possibly you'll also need to edit LIBS and DEPENDPATH.

See QMake Manual

Florian
It works if I copy past the list of directories. Is it possible to do the same with an environment variable ?
chmike
+1  A: 

I think there's a cleaner way to do this, but I can't remember. Anyway, you could use the system directive:

INCLUDEPATH += $$system( echo $MITK_INCLUDE_PATH )

You may also want to add it to depend path:

DEPENDPATH += $$system( echo $MITK_INCLUDE_PATH )
Caleb Huitt - cjhuitt
+1  A: 

Just found out the solution myself. Though I granted a point to Aidos and cjhuitt for their answers that put me on the right track and saved me valuable time. A special thanks for the link to the qmake documentation.

The first point is that I should modify the .pro file and not fiddle with the extended build arguments.

To get the content of an environment variable when qmake is processed one should use the following syntax

INCLUDEPATH += $$(MITK_INCLUDE_PATH)

Note that to get the content of an environment variable when make is processed one should use the following syntax

INCLUDEPATH += $(MITK_INCLUDE_PATH)

But this won't have the same effect if the environment variable contains multiple paths. The first form is then preferable.

Paths in the environment variable must be separated by spaces because the ; is not recognized.

If a path contain spaces, put quotes around it. Spaces appearing between the quotes will be replaced by '\ '.

chmike
if you have a list of directories in your environment variable that are separated by ';' , you can use something like this (not tested): INCLUDEPATH += replace($$(MITK_INCLUDE_PATH), ";", " ")
Florian