[cmake-developers] Should a module attempt to find its own dependencies?
Stephen Kelly
steveire at gmail.com
Sun Jan 8 13:05:26 EST 2012
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.
More information about the cmake-developers
mailing list