cmake學習筆記之add_library、target_link_libraries和link_directories

轉自:https://blog.csdn.net/bigdog_1027/article/details/79113342html

 

cmake是Linux(這裏默認是Ubuntu系統)下常使用的編譯C++的工具,而使用cmake就須要先在CmakeLists.txt文件中對編譯規則進行。這裏介紹經常使用的三種指令add_library、target_link_libraries和link_directories,該筆記主要參考了cmake官網給的教程,若有須要請訪問如下網址:函數

https://cmake.org/cmake/help/v3.1/工具

1. add_library

該指令的主要做用就是將指定的源文件生成連接文件,而後添加到工程中去。該指令經常使用的語法以下:spa

 

add_library(<name> [STATIC | SHARED | MODULE]
            [EXCLUDE_FROM_ALL]
            [source1] [source2] [...])

其中<name>表示庫文件的名字,該庫文件會根據命令裏列出的源文件來建立。而STATIC、SHARED和MODULE的做用是指定生成的庫文件的類型。STATIC庫是目標文件的歸檔文件,在連接其它目標的時候使用。SHARED庫會被動態連接(動態連接庫),在運行時會被加載。MODULE庫是一種不會被連接到其它目標中的插件,可是可能會在運行時使用dlopen-系列的函數。默認狀態下,庫文件將會在於源文件目錄樹的構建目錄樹的位置被建立,該命令也會在這裏被調用。.net

 

而語法中的source1 source2分別表示各個源文件。插件

例子:debug

2. link_directories

該指令的做用主要是指定要連接的庫文件的路徑,該指令有時候不必定須要。由於find_package和find_library指令能夠獲得庫文件的絕對路徑。不過你本身寫的動態庫文件放在本身新建的目錄下時,能夠用該指令指定該目錄的路徑以便工程可以找到。code

例子以下:htm

 

link_directories(
    lib
)

3. target_link_libraries

該指令的做用爲將目標文件與庫文件進行連接。該指令的語法以下:blog

 

target_link_libraries(<target> [item1] [item2] [...]
                      [[debug|optimized|general] <item>] ...)

上述指令中的<target>是指經過add_executable()和add_library()指令生成已經建立的目標文件。而[item]表示庫文件沒有後綴的名字。默認狀況下,庫依賴項是傳遞的。當這個目標連接到另外一個目標時,連接到這個目標的庫也會出如今另外一個目標的鏈接線上。這個傳遞的接口存儲在interface_link_libraries的目標屬性中,能夠經過設置該屬性直接重寫傳遞接口。

 

 

例子以下:

 

 

 

 

 

參考博客

https://www.cnblogs.com/coderfenghc/archive/2012/06/23/2559603.html

相關文章
相關標籤/搜索