It sounds like you want to use the INTERFACE version of target_include_directories(): https://cmake.org/cmake/help/latest/command/target_include_directories.html
What this means is "anything that links against interface library foo will also need to add these paths to its include directories." You will also want to use add_dependencies() to make the interface library dependent on the generation steps: https://cmake.org/cmake/help/latest/command/add_dependencies.html Kyle On Fri, Jun 28, 2019 at 11:17 AM Malfettone, Kris <kris.malfett...@sig.com> wrote: > > Hi all, > > I had a question about managing code generated header only libraries is a > very large project. Currently, we have a very large project with many static > and many generated files. The problem I have is that due to the size of the > project many usages (exe’s and libraries) of those code generated files > (header files) are done in separate folders from the generation targets. > That leads me to have to be very careful and explicit with using > add_custom_command(…), add_custom_target(…), add_depenendcies(…), and > set_source_files_properties( … PROPERTIES GENERATED TRUE ). Most of that > knowledge / setup modeled after reading > https://samthursfield.wordpress.com/2015/11/21/cmake-dependencies-between-targets-and-files-and-custom-commands/ > > > > I was wondering if I was able to simplify that by using Interface Libraries > and doing target_link_libraries( exe_name > MY_HEADER_ONLY_LIB_WITH_BOTH_STATIC_AND_GENERATED_FILES ). I guess my > concerns were when adding the interface library to a target in another folder > would I still have to: > > · Manually add the transitive dependencies > > · Manually indicate that the generated files are code generated. > > > > > > I am also assuming my setup would be something like this when using Interface > Libraries…. > > 1. Still use add_custom_command/add_custom_target to do the generation > steps. > > 2. Add the interface library in the same folder as the generation > steps, managing its relationship with the code generation target via > add_dependencies() meaning most of the code generation quirks are avoided. > > 3. When adding executables or libraries in other folders just use > target_link_libraries( exe_name > MY_HEADER_ONLY_LIB_WITH_BOTH_STATIC_AND_GENERATED_FILES ) > > a. Hoping that any transitive dependencies to the code generation steps > would be handled by exe_name being dependent on > MY_HEADER_ONLY_LIB_WITH_BOTH_STATIC_AND_GENERATED_FILES > > b. Also hoping that I wouldn’t have to specify which files are code > generated at that step > > > > I hope this makes sense. > > > > -Kris > > > ________________________________ > > IMPORTANT: The information contained in this email and/or its attachments is > confidential. If you are not the intended recipient, please notify the sender > immediately by reply and immediately delete this message and all its > attachments. Any review, use, reproduction, disclosure or dissemination of > this message or any attachment by an unintended recipient is strictly > prohibited. Neither this message nor any attachment is intended as or should > be construed as an offer, solicitation or recommendation to buy or sell any > security or other financial instrument. Neither the sender, his or her > employer nor any of their respective affiliates makes any warranties as to > the completeness or accuracy of any of the information contained herein or > that this message or any of its attachments is free of viruses. > -- > > 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 -- 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