On Mon, Oct 7, 2019 at 9:32 PM Setzer Sebastian (CM-CI2/ECS2) via CMake < cmake@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
-- Powered by www.kitware.com Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ Kitware offers various services to support the CMake community. For more information on each offering, please visit: CMake Support: http://cmake.org/cmake/help/support.html CMake Consulting: http://cmake.org/cmake/help/consulting.html CMake Training Courses: http://cmake.org/cmake/help/training.html Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Follow this link to subscribe/unsubscribe: https://cmake.org/mailman/listinfo/cmake