target_link_libraries裏庫文件的順序符合gcc鏈接順序的規則,即被依賴的庫放在依賴它的庫的後面,比如
target_link_libraries(hello A B.a C.so)
在上面的命令中,libA.so可能依賴於libB.a和libC.so,如果順序有錯,鏈接時會報錯。還有一點,B.a會告訴CMake優先使用靜態鏈接庫libB.a,C.so會告訴CMake優先使用動態鏈接庫libC.so,也可直接使用庫文件的相對路徑或絕對路徑。使用絕對路徑的好處在 於,當依賴的庫被更新時,make的時候也會重新鏈接。
本文轉載自博客CMake使用總結的一部分。