I have a vendor supplied library archive which I have imported into my project:
add_library( lib_foo STATIC IMPORTED GLOBAL ) set_target_properties( lib_foo PROPERTIES IMPORTED_LOCATION "${CMAKE_CURRENT_LIST_DIR}/vendor/foo.a" ) set_target_properties( lib_foo PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${CMAKE_CURRENT_LIST_DIR}/vendor" )
When I try to link an application using this library, I get undefined reference to 'pthread_atfork'
linker errors:
/usr/lib/libtcmalloc_minimal.a(libtcmalloc_minimal_internal_la-static_vars.o): In function `SetupAtForkLocksHandler': /tmp/gperftools-2.4/src/static_vars.cc:119: undefined reference to `pthread_atfork' ../vendor/foo.a(platformLib.o): In function `foo::Thread::Impl::join()':
So vendor/foo.a
has a dependency on pthread
.
I tried target_link_libraries(lib_foo pthread)
but that doesn't work because lib_foo
is an IMPORTED target, rather than a built target
CMake Error at libfoo/CMakeLists.txt:41 (target_link_libraries): Attempt to add link library "pthread" to target "lib_foo" which is not built in this directory.
Question:
How do I link pthread
to lib_foo
, or specify that targets with a dependency on lib_foo
also have a dependency on pthread?