I'd like to create a liboo.so
from a libfoo.a
using CMake.
So far I have
include_directories(third-party/includes)
find_library(${thirdparty_LIBRARIES} foo PATHS third-party/lib)
add_library(boo SHARED empty.cpp)
target_link_libraries(boo ${thirdparty_LIBRARIES})
add_executable(runBoo main.cpp)
target_link_libraries(runBoo boo)
where main calls functions from libfoo.so
. But provokes the error:
main.cpp:(.text+0x26): undefined reference to `Foo::Foo()'
main.cpp:(.text+0x50): undefined reference to `Foo::sayHello(std::basic_string<char, std::char_traits<char>, std::allocator<char> >)'
I'm guessing the symbols aren't added since empty.cpp
doesn't use them, but I'm not sure that's the issue and how to overcome it.
I've seen CMake: how create a single shared library from all static libraries of subprojects? , but I'd prefer to stick to lower versions of cmake for now.
I've also seen how to link static library into dynamic library in gcc but I can't get it to work and I'm using CMake anyway.
There was just a silly mistake. The corrected code is:
include_directories(third-party/includes)
find_library(thirdparty_LIBRARIES foo PATHS third-party/lib) //remove the ${}!
add_library(boo SHARED empty.cpp)
target_link_libraries(boo ${thirdparty_LIBRARIES})
add_executable(runBoo main.cpp)
target_link_libraries(runBoo boo)