[cmake-developers] Should a module attempt to find its own dependencies?

2012-01-08 Thread Stephen Kelly

Hi,

I don't think I've ever seen a direct answer to this question. Is it 
something to be decided on a case by case basis? If so, then why is there no 
general case? 

I can see a possible reason that it is not solvable in the general case 
because sometimes the behaviour of find_package can be changed by setting 
variables (eg, one might use QT_USE_QTXMLPATTERNS before finding Qt4).

Specifically this comes up for me because I need to know whether Qt5 modules 
should find their own dependencies. That is, should 

find_package(Qt5Gui)

cause 

find_package(Qt5Core REQUIRED) 

to be called or not? Should that be the responsibility of the caller?

Thanks,

Steve.


--

Powered by www.kitware.com

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/cgi-bin/mailman/listinfo/cmake-developers


Re: [cmake-developers] Should a module attempt to find its own dependencies?

2012-01-08 Thread Stephen Kelly
Alexander Neundorf wrote:

 On Sunday 08 January 2012, Stephen Kelly wrote:
 Hi,
 
 I don't think I've ever seen a direct answer to this question.
 
 AFAIK, yes, they should.
 FindKDE4Internal.cmake finds Qt, FindPNG.cmake finds zlib.
 
 
 Is it something to be decided on a case by case basis? If so, then why is
 there no general case?
 
 I can see a possible reason that it is not solvable in the general case
 because sometimes the behaviour of find_package can be changed by setting
 variables (eg, one might use QT_USE_QTXMLPATTERNS before finding Qt4).
 
 Specifically this comes up for me because I need to know whether Qt5
 modules should find their own dependencies. That is, should
 
 find_package(Qt5Gui)
 
 cause
 
 find_package(Qt5Core REQUIRED)
 
 to be called or not?
 
 I'd say yes.
 Otherwise the imported targets in Qt5Gui will depend on not yet defined
 targets from Qt5Core.
 
 The same way cmake takes care of adding the required additional libraries
 to the link line (like adding zlib when linking libpng), it should also
 take care of this, IMO.
 
 You should just have to state
 find_package(Foo)
 and this will get you Foo.

That implies that 

* Qt5Gui_INCLUDE_DIRS should also contain Qt5Core_INCLUDE_DIRS

* Qt5Gui_DEFINITIONS should contain Qt5Core_DEFINITIONS

* Qt5Gui_COMPILE_DEFINITIONS should contain Qt5Core_COMPILE_DEFINITIONS

Right? 

(for the libraries, the dependencies are already part of the link 
dependencies variable).

Otherwise you would be doing this:

find_package(Foo)
include_directories(
  ${Foo_INCLUDE_DIRS}
  ${Bar_INCLUDE_DIRS} # Where does this come from ??
)

Thanks,

Steve.


--

Powered by www.kitware.com

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/cgi-bin/mailman/listinfo/cmake-developers


Re: [cmake-developers] Should a module attempt to find its own dependencies?

2012-01-08 Thread Alexander Neundorf
On Sunday 08 January 2012, Stephen Kelly wrote:
 Alexander Neundorf wrote:
  On Sunday 08 January 2012, Stephen Kelly wrote:
  Hi,
  
  I don't think I've ever seen a direct answer to this question.
  
  AFAIK, yes, they should.
  FindKDE4Internal.cmake finds Qt, FindPNG.cmake finds zlib.
  
  Is it something to be decided on a case by case basis? If so, then why
  is there no general case?
  
  I can see a possible reason that it is not solvable in the general case
  because sometimes the behaviour of find_package can be changed by
  setting variables (eg, one might use QT_USE_QTXMLPATTERNS before
  finding Qt4).
  
  Specifically this comes up for me because I need to know whether Qt5
  modules should find their own dependencies. That is, should
  
  find_package(Qt5Gui)
  
  cause
  
  find_package(Qt5Core REQUIRED)
  
  to be called or not?
  
  I'd say yes.
  Otherwise the imported targets in Qt5Gui will depend on not yet defined
  targets from Qt5Core.
  
  The same way cmake takes care of adding the required additional libraries
  to the link line (like adding zlib when linking libpng), it should also
  take care of this, IMO.
  
  You should just have to state
  find_package(Foo)
  and this will get you Foo.
 
 That implies that
 
 * Qt5Gui_INCLUDE_DIRS should also contain Qt5Core_INCLUDE_DIRS
 
 * Qt5Gui_DEFINITIONS should contain Qt5Core_DEFINITIONS
 
 * Qt5Gui_COMPILE_DEFINITIONS should contain Qt5Core_COMPILE_DEFINITIONS
 
 Right?


Yes, I'd say so.
But let's wait also for some opinions from others.

Alex
--

Powered by www.kitware.com

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/cgi-bin/mailman/listinfo/cmake-developers


Re: [cmake-developers] Should a module attempt to find its own dependencies?

2012-01-08 Thread Michael Wild
On 01/09/2012 03:07 AM, David Cole wrote:
 
 
 On Sunday, January 8, 2012, Alexander Neundorf neund...@kde.org
 mailto:neund...@kde.org wrote:
 On Sunday 08 January 2012, Stephen Kelly wrote:
 Alexander Neundorf wrote:
  On Sunday 08 January 2012, Stephen Kelly wrote:
  Hi,
 
  I don't think I've ever seen a direct answer to this question.
 
  AFAIK, yes, they should.
  FindKDE4Internal.cmake finds Qt, FindPNG.cmake finds zlib.
 
  Is it something to be decided on a case by case basis? If so, then why
  is there no general case?
 
  I can see a possible reason that it is not solvable in the general
 case
  because sometimes the behaviour of find_package can be changed by
  setting variables (eg, one might use QT_USE_QTXMLPATTERNS before
  finding Qt4).
 
  Specifically this comes up for me because I need to know whether Qt5
  modules should find their own dependencies. That is, should
 
  find_package(Qt5Gui)
 
  cause
 
  find_package(Qt5Core REQUIRED)
 
  to be called or not?
 
  I'd say yes.
  Otherwise the imported targets in Qt5Gui will depend on not yet defined
  targets from Qt5Core.
 
  The same way cmake takes care of adding the required additional
 libraries
  to the link line (like adding zlib when linking libpng), it should also
  take care of this, IMO.
 
  You should just have to state
  find_package(Foo)
  and this will get you Foo.

 That implies that

 * Qt5Gui_INCLUDE_DIRS should also contain Qt5Core_INCLUDE_DIRS

 * Qt5Gui_DEFINITIONS should contain Qt5Core_DEFINITIONS

 * Qt5Gui_COMPILE_DEFINITIONS should contain Qt5Core_COMPILE_DEFINITIONS

 Right?


 Yes, I'd say so.
 But let's wait also for some opinions from others.

 Alex
 --

 Powered by www.kitware.com http://www.kitware.com

 Visit other Kitware open-source projects at
 http://www.kitware.com/opensource/opensource.html

 Please keep messages on-topic and check the CMake FAQ at:
 http://www.cmake.org/Wiki/CMake_FAQ

 Follow this link to subscribe/unsubscribe:
 http://public.kitware.com/cgi-bin/mailman/listinfo/cmake-developers

 
 I'd say so too. Waiting for a dissenting opinion... ;-)

Not from me... I fully agree with Alex.

Michael

--

Powered by www.kitware.com

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/cgi-bin/mailman/listinfo/cmake-developers