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

Timothy Wrona tjwrona1992 at gmail.com
Tue Mar 19 13:46:28 EDT 2019


Never mind... I spoke too soon. add_dependencies isn't working. It is
correctly making the other project build first, but the header file is for
some reason not generated until after it is needed.

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

> 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/f6383ed3/attachment.html>


More information about the CMake mailing list