I have a few small components that I am building as shared libraries for my main application. Lets use an example of liba
and libb
. Each is built within their own subdirectory as follows:
add_library(liba SHARED a.cpp)
Then, in the root project folder, I need to link my main application to both.
include_directories(a)
include_directories(b)
add_executable(dummy dummy.cpp)
target_link_libraries(dummy a b)
CMake runs fine with this, and my application compiles but fails to link. The problem is that b references a. If I supply the order of the libraries while linking as
target_link_libraries(dummy b a)
The program compiles and links just fine
When this sort of system starts involving more complex inter dependency of the libraries, it starts to be impossible even if the dependencies are acyclic. How do I manage the linking step here? Is there a trick to ordering libraries for linking in CMake?
See Question&Answers more detail:os