添加对象文件依赖项

问题描述 投票:0回答:1

我有一个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不太好用;我收到循环依赖错误和有关多个规则的投诉。

cmake ninja
1个回答
1
投票

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

特别是,考虑一下Object Libraries

© www.soinside.com 2019 - 2024. All rights reserved.