2016-07-20 6 views
0

bauen Ich lerne Cmake auf Windows.
Ich lese und laufe this example, so dass ich sowohl statische als auch gemeinsame Bibliotheken von einem visuellen Studio-Projekt erstellen kann.
fand ich diesen Befehl ein:
Wie statische und gemeinsame Bibliothek zur gleichen Zeit durch cmake

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

Nach meinem Verständnis dieser Befehl baut gemeinsam genutzte Bibliothek. Auch wenn ich von here statische und gemeinsame Bibliothek erstellen möchte, muss ich es durch zwei Projekte tun.

Warum kann das erste Beispiel, das ich verwendete, beide Bibliotheken aus einem Visual Studio-Projekt erstellen?

bearbeiten
Vielen Dank für Florian, ist der entscheidende Punkt in MathExports.h. Damit die Menschen leichter zu sehen, habe ich die Datei hier:

#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 

Antwort

2

Das verlinkte Beispiel nicht eine eigenständige statische math Bibliothek nicht bauen. Es hat "exportiert" (siehe MathExports.h) und generiert daher einen zusätzlichen Import .lib (der auf die Build-Bibliothek verweist).

Diese Importbibliothek wird verwendet, wenn Sie mit der DLL "verlinken".

können Sie

dumpbin /symbols math.lib 

verwenden, um die Referenzen in math.lib-math.dll zu sehen.

Referenzen

+0

Thank you very much. – sflee