簡體   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