J'écris un fichier CMakeLists.txt pour construire un de mes projets C++, qui est composé de
- libhybris.so : Une bibliothèque partagée avec quelques fonctions exportées.
- hybris : Un exécutable qui se lie à libhybris.so
- Un ensemble de diverses bibliothèques partagées liées à libhybris.so
Le problème est que libhybris.so dépend de libpcre (pour les capacités d'expression régulière), et j'ai donc les déclarations suivantes :
# libhybris.so generation
add_library( libhybris
SHARED
${LIB_SOURCES} )
...
# Needed libraries
target_link_libraries( libhybris
dl
pcre
pthread
readline )
Et l'une des bibliothèques partagées du point 3 s'appelle pcre.so, donc j'ai aussi ce qui suit :
add_library( pcre SHARED ${PCRE_SOURCES} )
...
target_link_libraries( pcre
dl
pcre
curl
pthread
readline
ffi
libhybris )
Ainsi, lorsque je lance un "cmake .", j'obtiens l'erreur suivante :
-- 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.
Parce que CMake pense que la dépendance pcre de libhybris.so (système libpcre.so) est la même que celle de mon pcre.so, ce qui n'est évidemment pas le cas.
Comment puis-je résoudre ce problème ? sans changer le nom de pcre.so ?