I'm writing a CMakeLists.txt file to build a C++ project of mine, which is composed of
- libhybris.so: A shared library with some exported functions.
- hybris: An executable which links to libhybris.so
- A set of various shared libraries which links to libhybris.so
The problem is that, libhybris.so depends on libpcre (for regular expression capabilities), so I have the following statements:
# libhybris.so generation
add_library( libhybris
SHARED
${LIB_SOURCES} )
...
# Needed libraries
target_link_libraries( libhybris
dl
pcre
pthread
readline )
And one of the shared libraries from point 3, is called pcre.so, so I have the following too:
add_library( pcre SHARED ${PCRE_SOURCES} )
...
target_link_libraries( pcre
dl
pcre
curl
pthread
readline
ffi
libhybris )
So, when I run a "cmake .", I have the following error:
-- Configuring done
CMake Error: The inter-target dependency graph contains the following strongly connected component (cycle):
"libhybris" of type SHARED_LIBRARY
depends on "pcre"
"pcre" of type SHARED_LIBRARY
depends on "libhybris"
At least one of these targets is not a STATIC_LIBRARY. Cyclic dependencies are allowed only among static libraries.
Because CMake thinks that the libhybris.so pcre dependency (system libpcre.so) is the same of my pcre.so which it is obviously not.
How can I solve this problem without changing the pcre.so name?