【发布时间】:2019-01-15 06:02:20
【问题描述】:
现在我要将我的一个项目从 VS 项目转移到 cmake 项目。在这个项目中,我使用一个单例类来管理所有其他模块。在VS项目中是没有问题的,但是在cmake项目中会出现循环依赖的问题。例如,有模块“canbus”和单例类“manager”。
在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 和 manager 之间会有循环依赖,我想知道是否有更好的方法来处理这个问题,或者我应该改变我的项目的结构?希望熟悉cmake的人能给我一些建议或意见。谢谢。
【问题讨论】: