2016-07-20 11 views
0

私はWindows上でcmakeを学んでいます。
私はthis exampleを読み込んで実行して、1つのビジュアルスタジオプロジェクトからスタティックライブラリと共有ライブラリの両方をビルドすることができます。私は、このコマンドを見つけ
:私の理解によると
cmakeで同時に静的ライブラリと共有ライブラリを構築する方法

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

を、このコマンドは、共有ライブラリを構築しています。また、hereから静的ライブラリと共有ライブラリを構築したい場合、私は2つのプロジェクトでそれを行う必要があります。

なぜ、最初の例では、1つの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 

答えて

2

をリンクされている例は、スタンドアロンの静的mathライブラリを構築しません。 "エクスポート"(MathExports.hを参照)があるため、追加のインポート.lib(ビルド共有ライブラリを参照)が生成されています。

このインポートライブラリは、DLLに対して「リンク」しているときに使用されます。

あなたはmath.dllからmath.lib内の参照を参照してください

dumpbin /symbols math.lib 

を使用することができます。

参照

+0

ありがとうございました。 – sflee

関連する問題