是否有任何使用情況,其中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