[CMake] Sub dependencies?

Michael Wild themiwi at gmail.com
Sat Aug 13 03:35:03 EDT 2011


On Sat 13 Aug 2011 03:55:06 AM CEST, Doug wrote:
> I see.
> 
> I've tried this approach and I get the error:
> -- Found LIBPNG
> CMake Error at CMakeLists.txt:49 (export):
>   export given target "/usr/lib/libpng.so" which is not built by this
>   project.
> 
> 
> -- Configuring incomplete, errors occurred!
> 
> ~
> Doug.
> 
> On Fri, Aug 12, 2011 at 4:57 PM, Michael Wild <themiwi at gmail.com
> <mailto:themiwi at gmail.com>> wrote:
> 
>     On Fri 12 Aug 2011 10:49:45 AM CEST, Doug wrote:
>     > I'm sorry if I'm being dumb here, but I fail to see how that helps.
>     >
>     > That example is one where foobar depends explicitly on foo and bar.
>     >
>     > What if foo depends on bar2?
>     >
>     > How do I inherit that dependency from foo in foobar?
>     >
>     > _that's_ what I'm looking for.
>     >
>     > (If that example somehow explains that, I'm sorry, I can't see it. Can
>     > you point to a specific point in the page?)
>     >
>     > ~
>     > Doug.
>     >
>     > On Fri, Aug 12, 2011 at 2:34 PM, Michael Wild <themiwi at gmail.com
>     <mailto:themiwi at gmail.com>
>     > <mailto:themiwi at gmail.com <mailto:themiwi at gmail.com>>> wrote:
>     >
>     >     If the projects are independent, you might want to take a look
>     at this
>     >     Wiki page:
>     >    
>     http://www.cmake.org/Wiki/CMake/Tutorials/How_to_create_a_ProjectConfig.cmake_file.
>     >
>     >     HTH
>     >
>     >     Michael
>     >
> 
>     And that is what the example is *about*. The FooBar project *exports*
>     its targets, along with their dependencies, so that when other projects
>     do find_package(FooBar), they will be able to link against the foo
>     library without having to know any of the dependencies of it. E.g. the
>     project "hello" might look like this:
> 
>     project(hello)
>     find_package(FooBar REQUIRED)
>     include_directories(${FOOBAR_INCLUDE_DIRS})
>     add_executable(hello hello.c)
>     target_link_libraries(hello ${FOOBAR_LIBRARIES})
> 
> 
>     Michael

Did you do something like this?

export(TARGETS /usr/lib/libpng.so)

That would be wrong... You do it like this

find_package(PNG REQUIRED)
add_library(foo SHARED foo.c)
target_link_libraries(foo ${PNG_LIBRARIES})
install(TARGETS foo EXPORT FooLibraryDepends
  RUNTIME DESTINATION bin
  LIBRARY DESTINATION lib)
export(TARGETS foo FILE "${PROJECT_BINARY_DIR}/FooLibraryDepends.cmake")


Michael


More information about the CMake mailing list