我是CMAKE的新手,並且與與target_link_libraries相關的PUBLIC,PRIVATE和INTERFACE關鍵字有點混淆。文檔提到它們可以用來在一個命令中指定鏈路依賴性和鏈路接口。CMake target_link_libraries接口依賴關係
鏈接依賴和鏈接接口究竟意味着什麼?
我是CMAKE的新手,並且與與target_link_libraries相關的PUBLIC,PRIVATE和INTERFACE關鍵字有點混淆。文檔提到它們可以用來在一個命令中指定鏈路依賴性和鏈路接口。CMake target_link_libraries接口依賴關係
鏈接依賴和鏈接接口究竟意味着什麼?
如果要創建一個共享庫和源cpp文件#包含另一個庫(比如QtNetwork爲例)的頭,但頭文件中不包括QtNetwork頭,然後QtNetwork是PRIVATE
依賴。
如果您的源文件和頭文件包含另一個庫的頭文件,那麼這是一個PUBLIC
相關性。
如果您的頭文件但不包含源文件包含另一個庫的頭文件,則它是INTERFACE
相關性。
PUBLIC
和INTERFACE
的其他構建屬性將依賴關係傳播到使用庫。 http://www.cmake.org/cmake/help/v3.0/manual/cmake-buildsystem.7.html#transitive-usage-requirements
這是我聽過的這個問題最清楚的解釋。我希望[cmake文檔](https://cmake.org/cmake/help/latest/command/target_link_libraries.html)清楚! :-) – Ela782 2016-12-07 23:41:18
感謝您的解釋我明白現在的含義,但爲什麼指定'PUBLIC'或'PRIVATE'很重要?它有什麼變化? – user3667089 2017-01-17 18:07:37
使用'PRIVATE'不會將您的依賴項添加到鏈接到您的庫的項目。它更乾淨,同時也避免了您的依賴和用戶之間可能發生的衝突。 – user2658323 2017-02-23 17:29:27
相似的問題:http://stackoverflow.com/questions/26243169/cmake-target-include-directories-meaning-of-scope – TManhente 2016-05-28 21:10:19