Cmake學習筆記之(1)add_library、target_link_libraries和link_directories

add_library、target_link_libraries和link_directories的用法

一、add_library

用法:

該指令的主要作用就是將指定的源文件生成鏈接文件,然後添加到工程中去。該指令常用的語法如下:

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

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

例子:
在這裏插入圖片描述

二、link_directories

用法:

該指令的作用主要是指定要鏈接的庫文件的路徑,該指令有時候不一定需要。因爲find_package和find_library指令可以得到庫文件的絕對路徑。不過你自己寫的動態庫文件放在自己新建的目錄下時,可以用該指令指定該目錄的路徑以便工程能夠找到。

例子:

link_directories(
    lib
)

三、target_link_libraries

用法:

該指令的作用爲將目標文件與庫文件進行鏈接。該指令的語法如下:

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

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

例子:
在這裏插入圖片描述

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