在學習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...