亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在此問一下大家,是哪里出了問題?該怎么解決?

在此問一下大家,是哪里出了問題?該怎么解決?

慕容森 2023-01-06 23:19:07
小弟最近在做一個小項目,需要用到cmake的target_link_libraries()來鏈接一個已經存在的動態庫文件,就像這樣 myproject/libs/libcurl.so(libcurl.so是直接下載的)。我把CmakeList.txt和qiproject.xml放在另一個文件夾下,就像這樣 myproject/build/cmakelist.txt. 編輯cmakelist.txt的時候使用target_link_libraries()來鏈接動態庫 ,在make的時候發現,只有使用動態庫的絕對路徑才行得通,換成相對路徑就不行。
查看完整描述

3 回答

?
幕布斯7119047

TA貢獻1794條經驗 獲得超8個贊

使用相對路徑的時候,你要讓cmake能夠搜索到找到你動態庫,就像直接使用gcc/g++來鏈接的時候一樣,要使用-L來指定第三方庫所在路徑。
cmake可以使用 LINK_DIRECTORIES 命令來指定第三方庫所在路徑,比如,你的動態庫在
/home/myproject/libs
這個路徑下,則通過命令:
LINK_DIRECTORIES(/home/myproject/libs)
把該路徑添加到第三方庫搜索路徑中,這樣就可以使用相對路徑了,使用TARGET_LINK_LIBRARIES的時候,只需要給出動態鏈接庫的名字就行了,比如:
TARGET_LINK_LIBRARIES(MyApp -lcurl )

查看完整回答
反對 回復 2023-01-10
?
眼眸繁星

TA貢獻1873條經驗 獲得超9個贊

程序執行時的當前路徑可能不是你存放list的路徑

查看完整回答
反對 回復 2023-01-10
?
縹緲止盈

TA貢獻2041條經驗 獲得超4個贊

使用相對路徑的時候,你要讓cmake能夠搜索到找到你動態庫,就像直接使用gcc/g++來鏈接的時候一樣,要使用-L來指定第三方庫所在路徑。cmake可以使用  LINK_DIRECTORIES 命令來指定第三方庫所在路徑,比如,你的動態庫在/home/myproject/libs這個路徑下,則通過命令:LINK_DIRECTORIES(/home/myproject/libs),把該路徑添加到第三方庫搜索路徑中,這樣就可以使用相對路徑了,使用TARGET_LINK_LIBRARIES的時候,只需要給出動態鏈接庫的名字就行了。

拓展:

1、CMake是一個跨平臺的安裝(編譯)工具,可以用簡單的語句來描述所有平臺的安裝(編譯過程)。他能夠輸出各種各樣的makefile或者project文件,能測試編譯器所支持的C++特性,類似UNIX下的automake。

2、只是 CMake 的組態檔取名為 CMakeLists.txt。Cmake 并不直接建構出最終的軟件,而是產生標準的建構檔(如 Unix 的 Makefile 或 Windows Visual C++ 的 projects/workspaces),然后再依一般的建構方式使用。這使得熟悉某個集成開發環境(IDE)的開發者可以用標準的方式建構他的軟件,這種可以使用各平臺的原生建構系統的能力是 CMake 和 SCons 等其他類似系統的區別之處。


查看完整回答
反對 回復 2023-01-10
  • 3 回答
  • 0 關注
  • 135 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號