繁体   English   中英

如何通过cmake同时构建静态和共享库

[英]How to build static and shared library at the same time through cmake

我正在学习Windows上的cmake。
我阅读并运行了此示例,以便可以从一个Visual Studio项目构建静态库和共享库。
我发现此命令:

add_library(math SHARED ${MATH_SOURCES} ${SIMPLE_FUNCTION_SOURCES} ${ADVANCED_FUNCTION_SOURCES})

根据我的理解,此命令正在构建共享库。 另外,从这里开始 ,如果要构建静态和共享库,则必须由两个项目来完成。

那么,为什么我使用的第一个示例可以从一个Visual Studio项目构建两个库?

编辑
感谢Florian ,关键是在MathExports.h 为了让人们更容易看到,我将文件放在这里:

#ifndef MathExports_h
#define MathExports_h

#ifdef _WIN32
    #ifdef math_EXPORTS
        #define  MATH_EXPORT __declspec( dllexport )
    #else
        #define  MATH_EXPORT __declspec( dllimport )
    #endif
#else
    #define    MATH_EXPORT
#endif

#endif // MathExports_h

链接的示例未构建独立的静态math库。 它确实具有“ exports”(请参阅MathExports.h ),因此它正在生成一个附加的import .lib (它引用了构建共享库)。

当您针对DLL“链接”时,将使用此导入库。

您可以使用

dumpbin /symbols math.lib

查看math.libmath.dll的引用。

参考文献

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM