[CMake] Specifying code in one subdirectory depends on a library from another subdirectory

Timothy Wrona tjwrona1992 at gmail.com
Tue Mar 19 13:41:03 EDT 2019


Seems I might be able to answer my own question.

It looks like "add_dependencies(subproject1_exe subproject2_lib)" worked.

I had to do a clean first though because it didn't work the first time
since some old files were left around.

Hope this helps anyone else with a similar issue!

On Tue, Mar 19, 2019 at 1:13 PM Timothy Wrona <tjwrona1992 at gmail.com> wrote:

> 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.
>
> 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.
>
> Consider this example:
>
>     my_project/
>         CMakeLists.txt:
>           add_subdirectory('subproject1')
>           add_subdirectory('subproject2')
>
>     my_project/subproject1/
>         CMakeLists.txt:
>             add_executable(subproject1_exe <sources>)
>             target_link_libraries(subproject1_exe subproject2_lib) # <--
> THIS is the problem
>
>     my_project/subproject2/
>         CMakeLists.txt:
>             add_library(subproject2_lib <sources>)
>
> 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.
>
> Does anyone know how to properly tell CMake about the dependency so it
> will build correctly?
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://cmake.org/pipermail/cmake/attachments/20190319/8fedcd65/attachment.html>


More information about the CMake mailing list