That's not my understanding of the "add_custom_command()". For "add_custom_command( TARGET )" it runs for the specified build events of associated target. Which didn't work correctly for Visual Studio 2017 as I mentioned.
For "add_custom_command( OUTPUT )" it'll run if OUTPUT is missing or DEPENDS are updated or needs to be brought up to date, it is not necessarily unconditional every time the build is initiated. In the example you linked to it is using "add_custom_target()" in conjunction with "add_custom_command( OUTPUT )". "add_custom_target()" is always out of date and forces the items it DEPENDS on to be brought up to date by running the associated "add_custom_command(OUTPUT)" commands. That's why I thought it was related because in both cases the "add_custom_target()" didn't have any commands itself. The example does seem roundabout to me because "add_custom_target()" can take individual commands I don't see why they used "add_custom_command(OUTPUT)" at all. But that really isn't the point of this discussion. On Fri, Feb 8, 2019 at 9:59 PM Timothy Wrona <tjwrona1...@gmail.com> wrote: > Ha that actually seems like a totally separate bug. > > From what I understand - if "add_custom_command()" is not associated with > any target and is just given a command it is supposed to run at build time > every time the build is initiated, but with the Visual Studio generator it > seems to just skip over it unless CMake has something else it needs to do. > > On Fri, Feb 8, 2019 at 8:44 PM frodak17 <froda...@gmail.com> wrote: > >> I haven't tried it out but I'm not exactly surprised it wouldn't work >> with Visual Studio 2017. >> >> It seems to be similar to the issue mentioned here: >> https://stackoverflow.com/q/54557801/1028434 >> >> The problem I noticed in the case of the StackOverflow question, >> "add_custom_target(testcmake2 ALL)" doesn't have a "command" so it doesn't >> generate an output. >> >> When performing a build Visual Studio prints a message like "all outputs >> up to date" and skips over it. So any associated custom commands with the >> target are never run. >> Adding a "command" that is even an echo, like >> add_custom_target(testcmake1 COMMAND ${CMAKE_COMMAND} -E echo "Running >> testcmake1 step 1"), and the problem goes away. >> >> >> >> On Fri, Feb 8, 2019 at 6:08 PM Timothy Wrona <tjwrona1...@gmail.com> >> wrote: >> >>> I have been following the examples in the "CMake Cookbook" by Radovan >>> Bast and Roberto Di Remigio and came across one example that doesn't appear >>> to work right on Windows. >>> >>> The source code for these example can be found here: >>> https://github.com/dev-cafe/cmake-cookbook >>> >>> Chapter-06/Recipe-07 is supposed to update the Git commit hash >>> referenced by the version header file every time the project is built. >>> According to the book, "add_custom_command()" is supposed to execute on >>> every build regardless of whether any files are changed. This example seems >>> to work correctly in a Linux environment, but not in Windows with the >>> Visual Studio Generator. When a new commit is created (an empty commit >>> created with "git commit --allow-empty") the custom command is never called >>> and the commit hash is not updated correctly. >>> >>> For specific instructions to reproduce the issue, see this bug report I >>> opened for the example in the book: >>> https://github.com/dev-cafe/cmake-cookbook/issues/506 >>> >>> I assumed this was an issue with the example, but it looks like the >>> Visual Studio Generator may not be handling "add_custom_command()" >>> correctly and may be the source of the problem. >>> >>> System info: >>> CMake version 3.13.3 >>> Windows 10 >>> Visual Studio 2017 >>> -- >>> >>> 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-developers >>> >>
-- 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-developers