添加对象文件依赖项

时间:2017-12-29 21:08:37

标签: cmake ninja

我有一个CMake项目。由于某种原因(我不会在这里说,但我可以根据要求提供),我需要一些目标文件,这些文件是在其他库之前编译的同一个库的一部分。具体做法是:

  • FILES是源文件列表
  • file_a.cFILES
  • 的成员
  • file_d.cFILES
  • 的成员
  • 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 个答案:

答案 0 :(得分:1)

不要尝试声明目标文件之间的依赖关系。如果存在具有依赖关系的文件,请将它们分解为具有add_library的单独库,然后使用add_dependenciestarget_link_libraries声明依赖关系。这样做没有额外的费用。

特别要考虑Object Libraries