我正在尝试将单元测试添加到我的库中,目录布局如下:
include/
公共标题src/
内部实施
我希望能够对内部实现进行单元测试。到目前为止,我已经尝试将我的库静态链接到单元测试可执行文件并添加
src/
以包含目录。它工作正常,我能够测试隐藏的内容。当库动态链接到可执行文件时,问题就开始了,因为内部类没有被导出。
解决方案可能是创建两个库:用于实现的静态库和一个将链接到该静态库的主库。这样,实现静态库可以链接到单元测试 exe。
首先,我不知道如何创建主库,以便将其编译为共享库或静态库(取决于
BUILD_SHARED_LIBS
)。由于所有源都被编译为静态库,因此没有主库可以编译的源(它只会用于公开公共头文件)。其次,我在内部使用spdlog(子模块,通过add_subdirectory
添加)并且当BUILD_SHARED_LIBS
为ON
库之间的依赖关系如下:主库(共享库)<- impl library (static lib) <- spdlog (shared lib). It generates additional export problems.
什么可以解决上述问题?