<div dir="ltr">I am working on a complex CMake project that is part of a large legacy system that uses a top level project and "add_subdirectory" to create subprojects.<div><br></div><div>I have run into an issue because now one of the subprojects is dependant on another subproject, but I can't seem to find a clear way to tell CMake about this dependency.</div><div><br></div><div>Consider this example:</div><div><br></div><div><font face="monospace, monospace">    my_project/</font></div><div><font face="monospace, monospace">        CMakeLists.txt:</font></div><div><font face="monospace, monospace">          add_subdirectory('subproject1')</font></div><div><font face="monospace, monospace">          add_subdirectory('subproject2')</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">    my_project/subproject1/</font></div><div><font face="monospace, monospace">        CMakeLists.txt:</font></div><div><font face="monospace, monospace">            add_executable(subproject1_exe <sources>)</font></div><div><font face="monospace, monospace">            target_link_libraries(subproject1_exe subproject2_lib) # <-- THIS is the problem</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">    my_project/subproject2/</font></div><div><font face="monospace, monospace">        CMakeLists.txt:</font></div><div><font face="monospace, monospace">            add_library(subproject2_lib <sources>)</font></div><div><br></div><div>The actual code is much more complex than this, but this simple example illustrates the problem. The actual compilation error I am getting is caused by subproject1 including a header file that gets generated when subproject2 is built.</div><div><br></div><div>Does anyone know how to properly tell CMake about the dependency so it will build correctly?</div></div>