March 25, 2011

Raul Raul
Ant Farmer
108 posts

[Moved] How to set Sources Directory in QMake

Page  
1

Hi everyone…

I want to order my project files this way:

  1. /    *root
  2. /myproject.pro
  3.       /include   *the .h files
  4.       /src        *the .cpp files

Is there a way I can do this with qmake? because as I see in qmake, I can set the includes folder with the INCLUDEPATH, but I can’t find any variable in the documentation to set the SRC file. Any tips on this? As you can imagine, my .pro file is in root. I have thought about placing the .pro file in src, but I don’t feel it’s the usual project structure, usually you place the makefile in root, and then have a src, include and lib folders.

Thanks!

[EDIT: @-tags for formatting, Volker]

 Signature 

Raul Guerrero
http://jimi.mx

17 replies

March 25, 2011

mlong mlong
Mad Scientist
1517 posts

You can use the relative path in the SOURCES variable in your .pro file (SOURCES += src/somefile.cpp)

 Signature 

Senior Software Engineer
AccuWeather Enterprise Solutions
/* My views and opinions do not necessarily reflect those of my employer.  Void where prohibited. */

March 26, 2011

ucomesdag ucomesdag
Lab Rat
243 posts

You can use the subdirs [doc.trolltech.com] variable in your pro file.

My pro file looks like this for example:

  1. TEMPLATE = subdirs
  2. CONFIG += ordered
  3. SUBDIRS += src

And in the sub directories the actual .pro file.

 Signature 

Write “Qt”, not “QT” (QuickTime).

March 26, 2011

Raul Raul
Ant Farmer
108 posts

@mlong – using relative path to SOURCES still doesn’t change the fact that I’d have the src/ in the file path, that’s exactly what I’m trying to avoid.

@ucomesdag – the subdirs template would mean that I need to configure .pri files, so I’d have to setup a module, which is not a clean way of doing that

 Signature 

Raul Guerrero
http://jimi.mx

March 26, 2011

mlong mlong
Mad Scientist
1517 posts

I don’t believe there is a variable for setting the source path. As I recall, the INCLUDEPATH variable is used for resolving the #include locations in your source code at compile time, not for qmake to locate the headers’ location in the source tree in your project. You’ll still need to explicitly include the paths to the headers in the HEADERS variable (HEADERS += include/foo.h).

No matter which way you go, the SOURCES and HEADERS variables need to explicitly point to the files you’re using, either in a subdirectory or in the working directory.

 Signature 

Senior Software Engineer
AccuWeather Enterprise Solutions
/* My views and opinions do not necessarily reflect those of my employer.  Void where prohibited. */

March 26, 2011

Thanatos.jsse Thanatos.jsse
Ant Farmer
72 posts

Well Raul, try to add DEPENDPATH [doc.qt.nokia.com] variable to *.pro file.

  1. #Something like this
  2. ...
  3. DEPENDPATH += $$PWD/src
  4. ...

Good luck…

March 26, 2011

Raul Raul
Ant Farmer
108 posts

@mlong – yeah, I guess you’re right, there is no other way to go, I’ll just have to settle and have the src/ and include/ in my project files, thanks :)

@thanatos.jsse – on you DEPENDPATH, instead of using $$PWD/src you could use ./src instead, relative paths are allowed that way, just so you know ;)

 Signature 

Raul Guerrero
http://jimi.mx

March 27, 2011

leon.anavi leon.anavi
Mad Scientist
1062 posts

Hi Raul,

I had the same problem and honestly did not find a good solution. You can use the following code at the pro file to include all files from a given directory to the source:

  1. SOURCES   += src/*

This idea will not avoid the the src/ in the file path but at least you will not to add a list of all files and paths to them at the pro file.

Best regards,
Leon

 Signature 

http://anavi.org/

March 28, 2011

florent.revelut florent.reve..
Lab Rat
103 posts

If you want to split the file names and their location, you can use

  1. VPATH += ./src
  2. SOURCES += files1.cpp file2.cpp

VPATH is somehow the equivalent for source files of nclude path for makefiles.

You can have a look at qmake doc [doc.qt.nokia.com]

March 28, 2011

Raul Raul
Ant Farmer
108 posts

@florent.revelut – cool thanks! that’s almost what I need, too bad that Qt Creator still shows me the src and include as folders in the “sources” and “headers” section in the project tree, it would be nice if Qt Creator could dismiss that and use the vpath paths as root folders for sources.

Thanks!

 Signature 

Raul Guerrero
http://jimi.mx

March 28, 2011

Andre Andre
Area 51 Engineer
6075 posts

Raul wrote:
@florent.revelut – cool thanks! that’s almost what I need, too bad that Qt Creator still shows me the src and include as folders in the “sources” and “headers” section in the project tree, it would be nice if Qt Creator could dismiss that and use the vpath paths as root folders for sources.

Thanks!

Hmmm… no thanks to that feature, if you ask me. I actually like that the separation into folders is preserved. Perhaps we organize our projects in different ways, but for me Creator just putting them on the same level would be going backwards.

 Signature 

Looking for Qt developers to join our team @ i-Optics: https://qt-project.org/forums/viewthread/25393/

March 28, 2011

florent.revelut florent.reve..
Lab Rat
103 posts

André : well, I don’t agree 100% percent with you.

Personnally, I like when I can split physical organisation and logical organisation.

Physical organisation has to deal with constraint, dependencies, configuration management (e.g. some part of code delivered by another team, from open source project, from other repository).

Logical organisation is how you want to display it in your UI, which is “human related”

Exemple: – you can organise your code per layer in terms of configuration management (applicative, c++, C/ASM) – you want to display your code per feature (i.e. per vertical slices of the layer)

Sometime, having 1 sub-project per folder just messes around with your ide.

From my point of view, he cleanest is to have a way to split representation from build, a bit like cmake allows to do it.

March 28, 2011

Gerolf Gerolf
Area 51 Engineer
3211 posts

I agree that this would be a nice feature.
I use it a lot in MSVS, to organize the used files in logical groups.

 Signature 

Nokia Certified Qt Specialist.
Programming Is Like Sex: One mistake and you have to support it for the rest of your life. (Michael Sinz)

March 31, 2011

mzimmers mzimmers
Ant Farmer
524 posts

I can’t believe I haven’t had to ask this yet, but…

…what’s the recommended technique for adding a directory to the header path? I want to start using the QDeclarativeView.h file, but my makefile doesn’t know where to find it. Do I alter my UNIX $PATH variable? Manually edit the .pro file? Change some settings that I currently can’t seem to find?

Thanks.

March 31, 2011

Volker Volker
Robot Herder
5428 posts

mzimmers: add to your .pro file:

  1. QT += declarative

March 31, 2011

Andre Andre
Area 51 Engineer
6075 posts

You need to edit the .pro file to add the declarative module to your project. Then the relevant headers will also be found.

 Signature 

Looking for Qt developers to join our team @ i-Optics: https://qt-project.org/forums/viewthread/25393/

Page  
1

  ‹‹ upgraded to latest Xcode and...      Qt Creator Build Issue: ››

You must log in to post a reply. Not a member yet? Register here!