2013-03-14 8 views
5

私たちのプロジェクトでは、autotoolsを使用して構築され、私たちのライブラリのうちの1つのリンク(C)が必要なオブジェクトファイル(B)を生成するサードパーティライブラリ(A)を使用します。cmakeを使用して、external_project文で作成されたオブジェクトファイルを別のライブラリにリンクする方法は?

external_project(
    A 
    ... 
) 
set_source_files_properties(B PROPERTIES DEPEND A) 
add_library(C ... A) 
add_dependency(C B) 

私は、これはトリックを行う必要があることを印象を持っていたが、cmakeのコマンドは、それがadd_libraryのチェック中にファイルAを見つけることができないことを示すことによって失敗しました。

修正プログラムや代替ソリューションをご利用いただきありがとうございます。 (サードパーティのライブラリを変更することはできません) ありがとう!

答えて

3

いくつかの問題がここにあります

でなければなりません

  • add_dependencyAがある)ではない別のcmakeのターゲット、ソースファイルのリストが渡されることを期待し:-)

    したがって、add_libraryコールにオブジェクトファイルBを含めることが問題になりますが、設定時(CMakeが呼び出されたとき)では使用できなくなります。ビルド時にのみ。

    ExternalProject_Add(
        A 
        ... 
    ) 
    
    set_source_files_properties(
        ${B} PROPERTIES 
        EXTERNAL_OBJECT TRUE # Identifies this as an object file 
        GENERATED TRUE # Avoids need for file to exist at configure-time 
    ) 
    
    add_library(C ... ${B}) 
    
  • +0

    どうもありがとう、完璧な答え:

    は、私はあなたのような何かをする必要があるとしていると思います! (私は効果的なcmakeコードを書くつもりはなかったが、おそらくそれはもっとはっきりしていただろう)) –

    +0

    @Fraser申し訳ありませんが、私は理解しません....この "$ {B}"はどこから来ましたか? –

    +0

    @RaulLuna元の質問では、OPは、彼が "B"と呼ばれるオブジェクトファイルがあると言いました - 私はそれが以前のCMakeLists.txtの変数として定義されていると仮定しています – Fraser

    関連する問題