Теперь я собираюсь перевести один из моих проектов из проекта VS в проект cmake. И в этом проекте я использую одноэлементный класс для управления всеми другими модулями. Когда в проекте VS нет проблем, но в проекте cmake будет проблема циклической зависимости. Например, есть модуль «canbus» и синглтон-класс «менеджер».
В модуле canbus, потому что он будет использовать одноэлементный класс, поэтому файл CMakeLists.txt выглядит примерно так:
add_library(canbus STATIC
CanBus.cpp)
target_include_directories(canbus PUBLIC
${CMAKE_SOURCE_DIR})
target_link_libraries(canbus PRIVATE
manager)
И класс менеджера выглядит так:
class Manager
{
public:
static Manager* instance();
canbus::CanBus* getCanBus();
private:
canbus::CanBus _canBus;
private:
Manager(void) {}
~Manager(void) {}
Manager(const Manager& rhs) = delete;
Manager& operator=(const Manager& rhs) = delete;
};
Итак, файл CMakeLists.txt для менеджера выглядит так:
add_library(manager STATIC
Manager.cpp)
target_include_directories(manager PUBLIC
${CMAKE_SOURCE_DIR})
target_link_libraries(manager PUBLIC
canbus
)
И между canbus и менеджером будет существовать круговая зависимость, я хотел бы знать, есть ли лучший способ решить эту проблему, или мне следует изменить структуру моего проекта? Надеюсь, кто-то знакомый с cmake может дать мне несколько советов или советов. Спасибо.