是否有任何使用情况,其中target_link_libraries和add_dependencies
target_link_libraries(my-lib x y z)
add_dependencies(my-lib x) # this is not just a waste of bytes?
如果是这样,有人可以解释它会是什么?
是否有任何使用情况,其中target_link_libraries和add_dependencies
target_link_libraries(my-lib x y z)
add_dependencies(my-lib x) # this is not just a waste of bytes?
如果是这样,有人可以解释它会是什么?
在当前CMake的释放:
一些错误检查add_dependencies
导致调用Target->AddUtility()
后。 x
被添加到utilities的列表中my-lib
。
target_link_libraries
不会导致对AddUtility
的调用,但它会将参数添加到LINK_LIBRARIES
目标属性中。
后来,LINK_LIBRARIES
目标属性的内容和实用程序列表都用于计算目标在cmComputeTargetDepends
中的依赖关系。
目标中的实用程序列表在配置时无法查询,并且仅在生成时使用,因此使用add_dependencies
以及已添加的库参数是target_link_libraries
是多余的。
它用于顶级目标相互依赖的情况。也就是说,如果X为您添加到您的项目(在顶层),一个东西与
add_library(x x.c y.c z.c)
你要告诉CMake的它。你可以用add_dependencies这样做。
我不知道在什么特别的你是有趣......
但从概念点 - 我认为你是对是字节
的废物来看 cmake的文档点 - 你应该更喜欢这样做,以保证正确的构建顺序
根据文档target_link_libraries,add_dependencies概念在意识形态分裂。分裂depencies和链接器选项的 这样的想法,也坚持在Makefile文件格式GNU make工具
..Specify库或标志链接给定的目标时使用..
...让顶级依赖于其它顶级目标,以确保 ,他们之前建立...
在现代的cmake从3。*您可以省略add_dependencies,如果你将执行与别名目标
add_library(fooLib 1.cpp 2.cpp)
add_library(my::fooLib ALIAS fooLib)
...
target_link_libraries(fooBin my::fooLib)
我没有downvote链接,但我的问题的关键是** add_dependencies是否**是_redundant_ ** target_link_libraries后**。 – 2014-12-04 08:53:24
好吧,我明显得到了这个错误。无论如何,我不可能像@seveire那样深入地评论,所以非常感谢。 – sebkraemer 2015-01-19 12:38:48