J'ai le problème suivant. J'écris un CMakeLists.txt pour construire un projet C++ de la mine, qui est composé deErreur de dépendance cyclique CMake lorsque le nom de la bibliothèque personnalisée est identique à celui d'une bibliothèque système
- libhybris.so: Une bibliothèque partagée avec quelques fonctions exportées.
- hybris: Un exécutable qui relie à libhybris.so
- Un ensemble de différentes bibliothèques partagées qui relie à libhybris.so
Le problème est que, libhybris.so dépend de libpcre (pour les capacités regexp) , donc j'ai 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 à partir du point 3, est appelé pcre.so, donc j'ai les suivantes aussi:
add_library(pcre SHARED ${PCRE_SOURCES})
...
target_link_libraries(pcre
dl
pcre
curl
pthread
readline
ffi
libhybris)
Donc, quand je cours un "cmake". J'ai 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 libhybris.so de PCRE (système libpcre.so) est le même de mon pcre.so qui est évidemment pas.
Comment puis-je résoudre ce problème sans en changeant pcre.so nom?
Si je ne spécifie pas le nom explicitement (en donnant le chemin complet de libhybris.so par exemple) cmake ne reconnaîtra pas libhybris.so en tant que dépendance de pcre.so, j'ai déjà essayé cela. –