2012-07-02 17 views
8

を作成します。 client.cをインサイド
lib.ccmakeのは、私は3つのファイルを持っている共有オブジェクト

の下で定義された関数の宣言を取得するように、私はlib.hファイルを含めることは、誰かが私に私はソース領域となるよう使用する必要があり、正確なCMakeListsファイルを伝えることができますCmakeの一時ファイルと、別のビルドディレクトリとバイナリディレクトリで生成されたバイナリとライブラリ(Windowsの場合は.dll)が整理されていますか?

答えて

4

cmakeのは、(私はこの例をテストしていない)、デフォルトでは、別のビルドディレクトリ上に構築:

PROJECT(myproject) 
CMAKE_MINIMUM_REQUIRED(VERSION 2.8) 

SET(mylibSRCS lib.c) 
SET(myprogSRCS client.c) 

ADD_LIBRARY(mylib ${mylibSRCS}) 
ADD_EXECUTABLE(myprog ${myprogSRCS}) 

TARGET_LINK_LIBRARIES(myprog mylib) 

あなたは実行します。

mkdir build 
cd build 
cmake .. 
make 

すべてが、ビルドの下になります。

+0

これらのシェルコマンドを実行せずに新しいディレクトリに常にビルドを行う方法があります:

ソリューションはそうのような「共有」オプションが欠落していますか?私はグーグルではありますが、役に立つリンクは見つかりませんでした。 –

+0

http://stackoverflow.com/questions/11143062/getting-cmake-to-build-out-of-source-without-wrap-scripts/11144109#11144109 – Fraser

+0

はい。あなたは 'mkdirビルド&cdビルド&cmake ..&make'することができます。リポジトリをスーパー・クリーニングする必要がある場合は、ビルド・ディレクトリを削除してください。これにより、元のソースから生成されたものが分離されます。 – Stewart

11

この解決方法ではファイル.soは作成されませんが、cmakeをさらに組み込むためにはcmake相当のファイルが作成されます。私はと解決策を探しています
はこれに相当するものを提供します:

実行時にdlopenで動的にロードすることができ plugin_lib.soを生成します
g++ -shared -Wl,-soname,plugin_lib.so.1 -o plugin_lib.so plugin_lib.o 

ADD_LIBRARY(mylib SHARED ${mylibSRCS}) 
+0

受け入れられる回答は更新する必要があります –

関連する問題