【发布时间】:2015-12-07 03:48:14
【问题描述】:
我有一个创建动态库的项目,该 dll 将被第三方应用程序使用。
但是要运行 googletests,我需要创建一个静态库,那么如何构建这两种类型的文件呢?
是否有一个构建后事件会创建一个库和一个动态库。
你会建议我如何处理这两种情况,(可能包括我的单元测试中的所有文件而不是链接库)?
【问题讨论】:
-
为什么不使用在提交时运行单元测试的持续集成系统?
-
不确定我是否遵循,如果文件是动态库 DLL,这将有什么帮助?我需要在运行测试之前以某种方式更改配置,然后再改回来。
-
如果 Visual Studio 太难配置,您可以尝试使用 mingw 并使用可配置的传统 makefile 或任何其他传统构建系统。然后使用任何 CI 系统,如 jenkins、hudson、travis-ci、circle-ci 等,并使用
make static test; ./test或类似的工具对其进行测试。我认为您应该能够从命令行调用 msvc,但我实际上从未这样做过,我也不知道。 -
但要运行 googletests,我需要创建一个静态库 构建静态库通常不仅仅是使用几个不同的命令行开关进行重新编译。您必须确保最终的静态库实际上可以正常工作(甚至正确链接)。使用静态库时,除非您非常小心,否则您可能会因为使用相同代码的多个实例(即函数、变量等)而导致链接器错误,而使用 DLL 则没有问题。
-
@PaulMcKenzie,这可能是对的,但我没有这个问题。我可以在静态库和动态 dll 之间切换。
标签: c++ visual-studio static-linking googletest dynamic-linking