Results 1 to 8 of 8

Thread: object files' names collision

  1. #1
    Join Date
    Apr 2007
    Posts
    3
    Thanks
    1
    Qt products
    Qt4
    Platforms
    Windows

    Default object files' names collision

    Hi,
    I came across a problem with qmake and Makefile.

    I have this kind of directory structure :
    Qt Code:
    1. src/NameSpace1/builder.cpp
    2. src/NameSpace2/builder.cpp
    To copy to clipboard, switch view to plain text mode 

    Some statements :
    • There is many namespaces
    • Each namespace has its own directory
    • Each namespace is owned by a developper who is responsible for it
    • Developpers don't know what's in others' namepsaces


    As you can see in the sample, some name collisions will happen. There is no problem at the C++ level, but during the compilation stage some targets will have the same name.
    For instance:
    Qt Code:
    1. $> qmake -project "DESTDIR = debug" -o MyApp.pro && qmake
    2. $> make
    To copy to clipboard, switch view to plain text mode 
    It will output all object files in debug/. Considering the first example, it will be two same targets "debug/builder.o".


    Is there any easy solution to create the same directory structure for object files as the source files ?

    It should be something like that:
    Qt Code:
    1. debug/NameSpace1/builder.o
    2. debug/NameSpace2/builder.o
    To copy to clipboard, switch view to plain text mode 

  2. #2
    Join Date
    Jan 2006
    Location
    Munich, Germany
    Posts
    4,714
    Thanks
    21
    Thanked 418 Times in 411 Posts
    Qt products
    Qt3 Qt4 Qt5 Qt/Embedded
    Platforms
    Unix/X11 Windows

    Default Re: object files' names collision

    you can use the OBJECTS_DIR and MOC_DIR tags in the pro file of each subproject (we are talking about sub projects here right?)
    ==========================signature=============== ==================
    S.O.L.I.D principles (use them!):
    https://en.wikipedia.org/wiki/SOLID_...iented_design)

    Do you write clean code? - if you are TDD'ing then maybe, if not, your not writing clean code.

  3. #3
    Join Date
    Apr 2007
    Posts
    3
    Thanks
    1
    Qt products
    Qt4
    Platforms
    Windows

    Default Re: object files' names collision

    Unfotunately we're not talking about subprojects. We have a single .pro files as we build a single programm (no DLL).

    OBJECTS_DIR seems to be working only if we had a .pro file per namespace. Is it somehow possible ? Having many .pro files sounds a bit ackward in this case, doesn't it ?

    What I'm looking for basically is a way to tell what object file path I want for every single src file.

  4. #4
    Join Date
    Jan 2006
    Location
    Munich, Germany
    Posts
    4,714
    Thanks
    21
    Thanked 418 Times in 411 Posts
    Qt products
    Qt3 Qt4 Qt5 Qt/Embedded
    Platforms
    Unix/X11 Windows

    Default Re: object files' names collision

    What I'm looking for basically is a way to tell what object file path I want for every single src file.
    I don't *know*, but I *think* this is not possible with qmake (*.pro) file.
    If you are not willing or can't use a diferent project structre, then you will have to give up on atuomation, and use a custom hand made makefile.
    There you can define each o file.

    But to me, your project structure makes little sense.
    Either use deferent development branches to the same project, or/and use sub projects - that would be my advice..
    ==========================signature=============== ==================
    S.O.L.I.D principles (use them!):
    https://en.wikipedia.org/wiki/SOLID_...iented_design)

    Do you write clean code? - if you are TDD'ing then maybe, if not, your not writing clean code.

  5. #5
    Join Date
    Jan 2006
    Location
    Warsaw, Poland
    Posts
    33,359
    Thanks
    3
    Thanked 5,015 Times in 4,792 Posts
    Qt products
    Qt3 Qt4 Qt5 Qt/Embedded
    Platforms
    Unix/X11 Windows Android Maemo/MeeGo
    Wiki edits
    10

    Default Re: object files' names collision

    The problem is not with qmake but with make. I suggest you either rename one of the files or separate your build into subprojects consisting of static libraries which you can then link together to form the final binary code.

  6. The following user says thank you to wysota for this useful post:

    PowerKiKi (30th October 2007)

  7. #6
    Join Date
    Apr 2007
    Posts
    3
    Thanks
    1
    Qt products
    Qt4
    Platforms
    Windows

    Default Re: object files' names collision

    I guess I'll go for static library option. Thank you for that suggestion.

    But still I don't get why my approach isn't supported. I'd say it's rather an easy obvious way to separate developpers' code without the need of "complicated" library linking.

  8. #7
    Join Date
    Jan 2006
    Posts
    369
    Thanks
    14
    Thanked 18 Times in 17 Posts
    Qt products
    Qt4
    Platforms
    Unix/X11 Windows

    Default Re: object files' names collision

    To any of the CMake gurus:

    Is this possible under CMake? I will give it a try tomorrow.

  9. #8
    Join Date
    Jan 2006
    Location
    Warsaw, Poland
    Posts
    33,359
    Thanks
    3
    Thanked 5,015 Times in 4,792 Posts
    Qt products
    Qt3 Qt4 Qt5 Qt/Embedded
    Platforms
    Unix/X11 Windows Android Maemo/MeeGo
    Wiki edits
    10

    Default Re: object files' names collision

    Quote Originally Posted by PowerKiKi View Post
    But still I don't get why my approach isn't supported. I'd say it's rather an easy obvious way to separate developpers' code without the need of "complicated" library linking.
    I'd say an obvious way is to use branches in your code repository.

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
Digia, Qt and their respective logos are trademarks of Digia Plc in Finland and/or other countries worldwide.