[CMake] DEPENDS parameter of add_custom_target

Craig Scott craig.scott at crascit.com
Mon Oct 7 08:28:14 EDT 2019


On Mon, Oct 7, 2019 at 11:21 PM Setzer Sebastian (CM-CI2/ECS2) <
Sebastian.Setzer at de.bosch.com> wrote:

> Hi Craig,
>
> On Mon, 7. Oct 2019 12:56 Craig Scott wrote:
> > As it happens, I just updated the docs for these in the last day or so.
>
> You mean you updated the docs of the two commands, but you did not update
> the docs of the DEPENDS parameter, right?
>

Yes, sorry if that was only partially related to your original query.
Fred's follow-up makes it clearer that the wording of a few sections for
these two commands probably need some improvement (that will be separate to
the merge request I linked to).



> > There is a difference between the two, but it's subtle and specific to
> the sort of scenario I mentioned in that issue comment.
>
> So the manual for the DEPENDS parameter of add_custom_target is outdated,
> but fixing it is not as easy as copying it from add_custom_command.
>

I'll defer a response on whether it is outdated or not, but I would expect
different text to be required for the two commands because they do have
different behaviours.



From: Craig Scott <craig.scott at crascit.com>
> Sent: Montag, 7. Oktober 2019 12:56
> To: Setzer Sebastian (CM-CI2/ECS2) <Sebastian.Setzer at de.bosch.com>
> Cc: cmake at cmake.org
> Subject: Re: [CMake] DEPENDS parameter of add_custom_target
>
>
>
> On Mon, Oct 7, 2019 at 9:32 PM Setzer Sebastian (CM-CI2/ECS2) via CMake
> <mailto:cmake at cmake.org> wrote:
> Dear list,
> The manual says:
> https://cmake.org/cmake/help/latest/command/add_custom_target.html
> Reference files and outputs of custom commands created with
> add_custom_command() command calls in the same directory (CMakeLists.txt
> file). They will be brought up to date when the target is built.
> Use the add_dependencies() command to add dependencies on other targets.
>
> This is different from what the manual of add_custom_command says, and
> would be surprising for all users who only read the manual of
> add_custom_command and then think they know what the parameter means for
> add_custom_target.
>
> But on the other hand, when I test with this:
> --------------------------------------------------
> cmake_minimum_required (VERSION 3.14)
> project(dependency_test LANGUAGES)
>
> add_custom_target(T1
>                   COMMAND echo T1
>                   )
> add_custom_target(T2
>                   COMMAND echo T2
>                   DEPENDS T1
>                   )
>
> # cmake -GNinja -B build .
> # ninja T2
> --------------------------------------------------
> Then T1 and T2 are built, so contrary to what the manual says, it seems to
> work.
>
> Is the manual just outdated (Maybe behavior has changed and only manual
> for add_custom_command has been updated)?
> Should it be the same as for add_custom_command, or are there really some
> differences?
>
> As it happens, I just updated the docs for these in the last day or so.
> You can find it in the not-yet-merged merge request here:
>
> https://gitlab.kitware.com/cmake/cmake/merge_requests/3891
>
> I wrote an explanation of the specific behavior of the dependencies in the
> associated issue here:
>
> https://gitlab.kitware.com/cmake/cmake/issues/19771#note_635547
>
> There is a difference between the two, but it's subtle and specific to the
> sort of scenario I mentioned in that issue comment.
>

-- 
Craig Scott
Melbourne, Australia
https://crascit.com

Get the hand-book for every CMake user: Professional CMake: A Practical
Guide <https://crascit.com/professional-cmake/>
Consulting services (CMake, C++, build/release processes):
https://crascit.com/services
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://cmake.org/pipermail/cmake/attachments/20191007/5e0b04b4/attachment.html>


More information about the CMake mailing list