cmake 學習之路 記錄中間所遇到過的所有錯誤與問題的解決

在使用CMAKE 的過程中遇到了一個問題:在程序代碼中將自己的中間代碼編譯成一個靜態庫,提供給其它的幾個程序代碼時,總是找到這個庫。


愁了好久,終於在一個不起眼的小地方,發現了一個可能的問題。

在使用TARGET_LINK_LIBRARIES(<your program> <link lib name>)時,鏈接到安裝在/usr/local/lib/libprotobuf.a 時使用兩種書寫情況都OK。

TARGET_LINK_LIBRARIES(<your program> libprotobuf.a)

TARGET_LINK_LIBRARIES(<your program> protobuf)


但是鏈接到自己同一個工程下面的自己寫的靜態庫時,總是找不到庫。

TARGET_LINK_LIBRARIES(<your program> libmessage.a)


鏈接時會提示錯誤:

/usr/bin/ld: cannot find -lmessage 


但是實際上我用另外的代碼直接鏈接卻是能夠鏈接成功,並且代碼也沒有寫得不對或者錯誤的地方。

然而將鏈接庫名字前面的lib 以及後面的 .a 去掉,即:

TARGET_LINK_LIBRARIES(<your program> message)

就能夠正常找到並鏈接該庫了。

具體的原因並不清楚,不過可以解決這個問題了。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章