2017-12-29 12 views
0

私はCMakeプロジェクトを持っています。何らかの理由で(ここでは言及しませんが、私が要求に応じて提供することができます)、同じライブラリの一部であるいくつかのオブジェクトファイルが、他のオブジェクトの前にコンパイルされる必要があります。具体的に:オブジェクトファイルの依存関係を追加する

  • FILES
  • file_a.cFILES
  • file_d.cのメンバーであるソースファイルのリストであることはFILES
  • file_a.oのメンバーであるfile_d.c
をコンパイルする前に、ディスク上に存在しなければなりません

これは私が今持っているものです:

set_source_files_properties(
    file_a.c 
    PROPERTIES 
    OBJECT_OUTPUTS file_a.o 
    ) 

set_source_files_properties(
    file_d.c 
    PROPERTIES 
    OBJECT_DEPENDS file_a.o 
    ) 

これはMakefileでうまく動作しますが、Ninjaでうまく再生されません。私は循環依存エラーを取得し、複数のルールについて苦情を言います。

答えて

1

オブジェクトファイル間の依存関係を宣言しないでください。依存関係のあるファイルがある場合は、add_libraryで別のライブラリに分割し、次に依存関係をadd_dependenciestarget_link_librariesと宣言します。これを行うための追加費用はありません。

特に、Object Librariesを参照してください。

関連する問題