У меня следующая проблема.
Я пишу файл CMakeLists.txt для создания моего проекта C ++, который состоит из
- libhybris.so: разделяемая библиотека с некоторыми экспортированными функциями.
- hybris: исполняемый файл, который ссылается на libhybris.so
- Набор различных общих библиотек, которые ссылаются на libhybris.so
Проблема в том, что libhybris.so зависит от libpcre (для возможностей регулярных выражений), поэтому у меня есть следующие утверждения:
# libhybris.so generation
add_library( libhybris
SHARED
${LIB_SOURCES} )
...
# Needed libraries
target_link_libraries( libhybris
dl
pcre
pthread
readline )
И одна из общих библиотек из пункта 3 называется pcre.so, поэтому у меня тоже есть следующее:
add_library( pcre SHARED ${PCRE_SOURCES} )
...
target_link_libraries( pcre
dl
pcre
curl
pthread
readline
ffi
libhybris )
Итак, когда я запускаю «cmake.», У меня появляется следующая ошибка:
-- 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.
Потому что CMake считает, что зависимость libhybris.so pcre (system libpcre.so) - это то же самое, что и мой pcre.so, но это явно не так.
Как я могу решить эту проблему без изменения имени pcre.so?