I created a project (see here) and am using it in another project through FetchContent
.
In my new project, I create a base library that depends on one of my fetched targets, we’ll call it fetchTarget
. Here I have
add_library( myBase SHARED )
target_link_libraries( myBase PUBLIC fetchTarget )
This builds myBase
just fine. However, when I try to use myBase
add_executable( myProg )
target_link_libraries( myProg PRIVATE myBase )
I get compile errors from sources on myProg
not finding include files from fetchTarget
( myProg
includes myBase
which includes fetchTarget
).
In trying to debug, I added this:
get_target_property(fetch_inc fetchTarget INCLUDE_DIRECTORIES)
message(" **** fetchTarget includes = ${fetch_inc}")
target_link_libraries( myBase PUBLIC fetchTarget)
get_target_property(myBase_inc myBase INCLUDE_DIRECTORIES)
message(" **** myBase includes = ${myBase_inc}")
Surprisingly, this prints
*** fetchTarget includes = $<BUILD_INTERFACE:/usr/src/project/build-DEBUG/_deps/fetchTarget-src/src>;/usr/src/project/build-DEBUG/_deps/fetchTarget-src/src
*** myBase includes = /usr/src/project/src/PUBLIC;/usr/src/project/src;$<BUILD_INTERFACE:/usr/src/project/src>
Why isn’t the fetchTarget
include path being propagated to the myBase
target? How can I fix that?