cmake 學習筆記之相對路徑編譯動態鏈結庫

2021-10-02 02:06:40 字數 1257 閱讀 1292

在學習cmake的過程中在想要編譯相對路徑的動態鏈結庫時碰到了一大堆問題,特此記錄下來。

第一步是編譯出動態鏈結庫.so檔案,這一步並不困難,有大把大把的部落格叫你,這裡也順帶提一下。

首先當然是要寫函式這裡隨便寫了乙個函式用來編譯為動態鏈結庫。

#include

"hello.h"

void

hello()

#ifndef hello_h

#define hello_h

#include

void

hello()

;#endif

#cmakelists.txt

cmake_minimum_required(version 3.0)

add_library(hello shared $/libhello/hello.c)

install(targets hello library destination lib)

寫好後在專案的build資料夾下使用cmake …

再使用make編譯就生成libhello.so

接下來就是重頭戲部分了

新建乙個專案 usehellolib 這個專案比較簡單 只有乙個.c檔案

#include

"hello.h"

intmain()

project(usehellolib)

add_executable(usehellolib usehellolib.c)

#由於個人習慣喜歡講.**件放入include資料夾

include_directories(include)

#這裡就是相對路徑的重點了

target_link_libraries(usehellolib $/libhello.so)

為了使得能夠訪問相對路徑的動態鏈結庫,要使用$cmake內部變數,這個變數代表的就是生成可執行檔案的相對位置,例如我習慣在build資料夾下使用cmake … 和 make編譯,這樣生成的可執行檔案就在build資料夾下,要想編譯成功就需要講.so檔案放入build資料夾下。

當編譯成功時就可以將.so和.out可執行檔案一起拷貝到其他資料夾下執行。

糾錯 其實能夠執行是因為那個路徑下的.so檔案沒有刪除,所以說這個辦法並沒有什麼卵用,請大佬們指點。

路徑詳解 絕對路徑,相對路徑,根相對路徑

路徑詳解 重點 1 絕對路徑 1 什麼是絕對路徑 檔案從最高端目錄下開始的完整路徑 1 訪問網路資源 1 由以下四個部分組成 1 協議名稱 2 主機名 ip位址,網域名稱 3 目錄路徑 4 檔名 ex 1 協議名 2 主機名 網域名稱 3 目錄路徑 img4 檔名 bd logo1.png 2 訪問...

絕對路徑 根相對路徑和文件相對路徑

相對路徑包括根相對路徑 site root 和文件相對路徑 document 兩種。根相對路徑 也稱相對跟目錄 的路徑以 開頭,路徑是從當前站點的根目錄開始計算。比如我們前面建的d盤myweb目錄就是名為 myweb 的站點,這時 index.htm 路徑,就表示檔案位置為d myweb index...

MFC CFileDialog 相對路徑

1 在mfc中想按照自己設定的路徑來開啟filedialog,其實cfiledialog有自己的變數 m ofn,該變數為openfilename的結構體,使用者可自己定義一些內容 例如 開啟窗體的名字 dlg.m ofn.lpstrtitle t 遙測載入 按照自己設定的路徑開啟dlg dlg.m...