2015-01-08 67 views
0

假設我有一個可執行的Alpha,它必須與共享庫Beta鏈接。 Beta本身依賴於共享庫Gamma。伽瑪已經存在,但我必須使用cmake自己編譯Alpha和Beta。何時在target_link_libraries中包含庫

因此,使用兩個CMakeLists.txt文件(Alpha和Beta中的每一個文件),我使用命令target_link_libraries來指示編譯所需的庫。我的問題是:這兩個CMakeLists.txt文件中哪一個需要添加Gamma?

Beta直接依賴於Gamma,因爲Beta中的代碼調用Gamma中的函數。但是,Alpha也間接依賴Gamma,所以我需要告訴Alpha的CMakeLists.txt文件嗎?

+0

請參閱http://www.cmake.org/cmake/help/v3.0/manual/cmake-buildsystem.7.html – steveire

回答

1

如果CMake知道Beta-> Gamma依賴性,它應該能夠使所有的工作。如果有一種情況你在沒有告訴CMake關於它對Gamma的依賴的情況下建立了Beta(這是可能做到的),那麼你就必須明確地表達Alpha-> ​​Gamma依賴。