Я пытаюсь настроить сборку cmake для одной из моих библиотек.Допустим, я хочу, чтобы библиотека B зависела от A. Обе библиотеки используют CMake в качестве системы сборки.Оба имеют внешнюю зависимость от gtest через git submodule
.
.
+-libA
|-CMakeLists.txt
|...
+-external/gtest
+-CMakeLists.txt
+-libB
|-CMakeLists.txt
|...
+-external/gtest
+-CMakeLists.txt
Какова будет лучшая структура проекта, чтобы иметь возможность создавать проекты независимо и в рамках более крупного проекта?
СВ приведенном выше макете я получаю сообщение об ошибке, что gtest определяется другим проектом:
CMake Error at libstyxe/external/gtest/googletest/cmake/internal_utils.cmake:161 (add_library):
add_library cannot create target "gtest" because another target with the
same name already exists. The existing target is a static library created
in source directory
"libsolace/external/gtest/googletest". See
documentation for policy CMP0002 for more details.
Опции, которые я пробовал: 1. Сделать ссылку на libA из libB / external и включить ее через add_directory.Builind libB завершается с ошибкой, аналогичной приведенной выше.2. Создание корневого CMakeLists.txt с добавлением libA и libB в качестве add_subdirectory.Та же проблема.
В libA / CMakeLists.txt и libB / CMakeLists.txt gtest включен как: add_subdirectory(external/gtest/googletest EXCLUDE_FROM_ALL)