国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【cmake學(xué)習(xí)】cmake 引入第三方庫(頭文件目錄、庫目錄、庫文件)

這篇具有很好參考價值的文章主要介紹了【cmake學(xué)習(xí)】cmake 引入第三方庫(頭文件目錄、庫目錄、庫文件)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

程序的編寫需要用到頭文件,程序的編譯需要lib文件,程序的運行需要dll文件,因此cmake引入第三方庫其實就是將include目錄、lib目錄、bin目錄引入工程。


????????目錄

1、find_package(批量引入庫文件和頭文件)

2、include_directories(引入頭文件目錄)

3、link_directories(引入庫文件目錄到當(dāng)前工程)

4、link_libraries (引入庫文件到當(dāng)前工程)

5、target_link_libraries(引入庫文件到子工程)

6、target_include_directories(引入頭文件目錄到子工程)


1、find_package(批量引入庫文件和頭文件)

find_package 的詳細使用:find_package 的詳細使用

find_package 需要通過 .cmake 為后綴的文件引入,能夠?qū)?.cmake 包含的庫和頭文件全部引入工程。不同的庫的達到的效果不同。有時需要搭配關(guān)鍵字使用:

  • REQUIRED:必須找到該庫,找不到就報錯
  • COMPONENTS:從庫中找子庫(模塊)xx,比如COMPONENTS Widget表示找到子模塊Widget

以O(shè)penCV庫為例,OpenCV庫提供的是 OpenCVConfig.cmake文件,只需引入一次,便可以將OpenCV所有的庫文件和頭文件引入到當(dāng)前工程。OpenCVConfig.cmake 也給出了詳細的說明。

find_package(OpenCV REQUIRED)

# OpenCV_INCLUDE_DIRS 是預(yù)定義變量,代表OpenCV庫的頭文件路徑
include_directories(${OpenCV_INCLUDE_DIRS}) 

# OpenCV_LIBS 是預(yù)定義變量,代表OpenCV庫的lib庫文件
target_link_libraries(MY_TARGET_NAME ${OpenCV_LIBS})

【cmake學(xué)習(xí)】cmake 引入第三方庫(頭文件目錄、庫目錄、庫文件)

以QT庫為例,QT庫是一個大型庫,內(nèi)部還包含了許多子庫,在引入的時候最好按需引入

# 含義:必須找到Qt5庫的子模塊Core,找不到就報錯
find_package(Qt5 COMPONENTS Core REQUIRED)

# 鏈接時需要加上前綴Qt::(這里是Qt5的庫)
target_link_libraries(qt_test
    Qt5::Core
)

注意:無論是上面的Widget,還是Core,都是去掉了前綴Qt5。實際上,Qt的子庫名字都是有前綴 "Qt5" 的!只不過在引入的時候,要去掉。

【cmake學(xué)習(xí)】cmake 引入第三方庫(頭文件目錄、庫目錄、庫文件)

2、include_directories(引入頭文件目錄)

include_directories表示引入頭文件搜索路徑,當(dāng)工程要用到某個頭文件的時候,就會去該路徑下搜索。一般都是在頂層的CmakeList文件中添加搜索路徑。

include_directories(完整路徑)
# 絕對路徑引入
include_directories("D:\\ProgramFiles\\Qt\\qt5_7_lib_shared_64\\include")

# 普通變量引入(可以理解為把D:\\ProgramFiles\\Qt\\qt5_7_lib_shared_64放入一個集合INCLUDE_PATH)
# ${變量名} 可以獲取集合內(nèi)容,允許拼接
set (INCLUDE_PATH D:\\ProgramFiles\\Qt\\qt5_7_lib_shared_64)
include_directories(${INCLUDE_PATH}/include)       

# 環(huán)境變量引入
# 假設(shè)環(huán)境變量是INCLUDE_PATH = D:\\ProgramFiles\\Qt\\qt5_7_lib_shared_64
# #ENV{環(huán)境變量名} 可以獲取環(huán)境變量的內(nèi)容,允許拼接
include_directories($ENV{INCLUDE_PATH}/include)

一個cmake總工程可以包含多個子工程,總工程引入的頭文件,并不代表子工程就可以用,就好比幼兒園老師(總工程)買來一箱蘋果,小朋友(子工程)根據(jù)需求拿蘋果。

3、link_directories(引入庫目錄——添加庫文件的搜索路徑)

link_libraries 表示添加第三方 lib 庫文件的搜索路徑。若工程在編譯的時候會需要用到某個第三方庫的 lib 文件,此時就可以使用 link_libraries 來添加搜索路徑。

link_libraries(完整路徑)
# 絕對引入
link_libraries("D:\ProgramFiles\Qt\qt5_7_lib_shared_64\lib")

# 預(yù)定義變量引入
# PROJECT_SOURCE_DIR 是cmake的預(yù)定義變量,表示頂層CmakeList文件所在路徑
link_libraries(${PROJECT_SOURCE_DIR}/ExtLib/ffmpeg/win64/lib)

# 環(huán)境變量引入
# 環(huán)境變量 QT_LIB = D:\\ProgramFiles\\Qt\\qt5_7_lib_shared_64
link_libraries($ENV{QT_LIB}/lib)

4、link_libraries (引入庫文件)

link_libraries 表示將具體的庫文件引入到當(dāng)前工程中,所填入的路徑必須是全路徑。

# 全路徑引入
LINK_LIBRARIES("/opt/MATLAB/R2012a/bin/glnxa64/libeng.so")

5、target_link_libraries(引入庫文件到子工程)

target_link_libraries 表示添加第三方 lib 庫文件到目標(biāo)子工程,上面 link_directories 是引入庫目錄到當(dāng)前工程,link_libraries 是引入庫文件到當(dāng)前工程,具體是哪個工程并沒有指明。就好比,貨車把滿載的貨物運到幼兒園里,但是沒分配。

target_link_libraries 起的作用就是分發(fā)工作,分發(fā)xx庫給指定工程,注意xx庫必須是當(dāng)前工程中有的或者 搜索路徑里有的。

target_link_libraries(子工程名 庫文件1 庫文件2 ...)     # 注意子工程名和庫文件名之間以空格隔開
add_executable(qt_test ${ALL_SRCS})    # 子工程名是 qt_test 

# 絕對路徑引入
target_link_libraries(qt_test 
    D:\\ProgramFiles\\Qt\\qt5_7_lib_shared_64\\lib\\Qt5Core.lib
    D:\\ProgramFiles\\Qt\\qt5_7_lib_shared_64\\lib\\Qt5Gui.lib
)

# 普通變量引入(被打包的lib文件,必須能在搜索路徑下找到)
set (LIB_FFMPEG "avcodec.lib" "avdevice.lib" "avfilter.lib")
target_link_libraries(qt_test 
    ${LIB_FFMPEG}
)

# 預(yù)定義變量引入
# PROJECT_SOURCE_DIR 是cmake的預(yù)定義變量,表示頂層CmakeList文件所在路徑
target_link_libraries(qt_test 
    ${PROJECT_SOURCE_DIR}/ExtLib/ffmpeg/win64/lib/avcodec.lib
)

6、target_include_directories(引入頭文件目錄到子工程)

target_include_directories 達到的效果和?target_link_libraries 是類似的,需要注意的是文章來源地址http://www.zghlxwxcb.cn/news/detail-492007.html

  • include_directories:將頭文件目錄引入到當(dāng)前工程
  • target_include_directories:將頭文件目錄針對性的引入到目標(biāo)子工程(當(dāng)前工程一般可以包含多個子工程)?

到了這里,關(guān)于【cmake學(xué)習(xí)】cmake 引入第三方庫(頭文件目錄、庫目錄、庫文件)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • vue3+ts import引入第三方j(luò)s文件報錯解決方法

    vue3+ts import引入第三方j(luò)s文件報錯解決方法

    報錯原因 :執(zhí)行 import XXX from ‘XXX.js’ 報錯,The requested module ‘xxx.js’ does not provide an export named ‘default’ 可能是第三方文件不支持模塊化標(biāo)準(zhǔn),不能按需導(dǎo)入 解決方案 : 第一種方法 : 在index.html里利用script全局引入 第二種方法 : 在所需的.vue文件里單獨引入,最后在hea

    2024年02月16日
    瀏覽(90)
  • 【196】JAVA8 用 DOM 方式的 API 解析XML文件,無需引入第三方依賴。

    JAVA8 可以使用標(biāo)準(zhǔn)的 DOM 方式的 API 來編寫代碼解析 XML 文件,無需引入第三方依賴。下面是兩個測試用的 XML 文件: test.xml test2.xml 負責(zé)接收所有信息的 AllDataDTO.java 負責(zé)接收用戶信息的 AllDataUserDTO.java 處理 XML 文件的工具類,XmlUtils.java 用于測試效果的類 Main.java 輸出結(jié)果:

    2024年01月22日
    瀏覽(25)
  • CMake Install 安裝第三方依賴庫

    cmake 提供 install 命令來安裝文件,方便打包。但是有時也會對第三方依賴庫有需求一起打包,在不確定第三方庫dll文件路徑和名稱的情況下,需要另一種方式來打包了。 比如想要打包opencv_world.dll,一般cmake依賴opencv的方式是通過第三方軟件包(* -config.cmake)的方式: 那么在

    2024年02月14日
    瀏覽(98)
  • 引入第三方字體庫 第三方字體庫Google Fonts

    引入第三方字體庫 第三方字體庫Google Fonts

    googlefonts官方網(wǎng)站 googlefonts中國網(wǎng)站 本人是在微信小程序中引入 在static中建一個文件夾font-family 例如字體鏈接:https://fonts.font.im/css?family=Kirang+Haerang 將該鏈接的返回的資源的復(fù)制到css文件中 font-family.css main.js引入 微信小程序不校驗合法域名就能看到結(jié)果

    2024年02月16日
    瀏覽(27)
  • 現(xiàn)代CMake高級教程 - 第 5 章:鏈接第三方庫

    雙笙子佯謬老師的【公開課】現(xiàn)代CMake高級教程課程筆記 案例 使用 tbb 庫 main.cpp 直接鏈接 tbb CMakeLists.txt 直接鏈接 tbb 的缺點: 如果這樣直接指定 tbb,CMake 會讓鏈接器在系統(tǒng)的庫目錄里查找 tbb,他會找到 /usr/lib/libtbb.so 這個系統(tǒng)自帶的,但這對于沒有一個固定庫安裝位置的

    2024年02月02日
    瀏覽(88)
  • Android JNI系列詳解之CMake配置庫文件的輸出目錄

    Android JNI系列詳解之CMake配置庫文件的輸出目錄

    一、前提 閱讀上一篇文章Android JNI系列詳解之CMake編譯工具的使用,里面講到了需要配置兩個文件:CMakeList.txt和build.gradle 二、配置CMake編譯工具輸出庫文件的路徑 1.默認的庫文件輸出路徑:app/build/intermediates/cmake/debug/obj 由此可見不便于每次查找,因此我們需要將這個路徑配置

    2024年02月10日
    瀏覽(22)
  • Ubuntu中使用vscode+cmake引用第三方庫進行編譯調(diào)試

    在自己的項目中引用openCV和Eigen庫。 opencv和Eigen庫的編譯安裝參見上一篇文章https://blog.csdn.net/qq_41816368/article/details/130090823?spm=1001.2014.3001.5502#t4 其他的第三方庫放在工作空間的thirdparty文件夾,項目編譯時一起編譯,不提前安裝。 首先新建一個文件夾作為工作空間 在創(chuàng)建Thir

    2023年04月25日
    瀏覽(104)
  • cmake-動態(tài)庫和靜態(tài)庫及使用OpenCV第三方庫

    cmake-動態(tài)庫和靜態(tài)庫及使用OpenCV第三方庫

    ?項目中會有單個源文件構(gòu)建的多個可執(zhí)行文件的可能。項目中有多個源文件,通常分布在不同子目錄中。這種實踐有助于項目的源代碼結(jié)構(gòu),而且支持模塊化、代碼重用和關(guān)注點分離。同時,這種分離可以簡化并加速項目的重新編譯。 add.h add.cpp main.cpp ?首先這是我們的目

    2024年01月24日
    瀏覽(126)
  • uniapp微信小程序引入第三方廣告插件

    uniapp微信小程序引入第三方廣告插件

    ? 以Slime廣告插件為例。 一、微信小程序后臺申請相關(guān)插件 ? 二、manifest.json文件 三、pages.json文件 四、要使用該插件的vue頁面 引用插件后就可以使用插件的相關(guān)方法。 附:Slime插件文檔 Slime | 小程序插件 | 微信公眾平臺

    2024年02月11日
    瀏覽(106)
  • 引入供應(yīng)鏈安全來保護第三方代碼元素

    引入供應(yīng)鏈安全來保護第三方代碼元素

    應(yīng)用程序安全測試解決方案 DerScanner 添加了一項新功能,允許用戶驗證應(yīng)用程序代碼中的第三方元素。 開源軟件供應(yīng)鏈攻擊事件一年內(nèi)增加兩倍,網(wǎng)絡(luò)威脅呈升級趨勢。第三方組件的統(tǒng)計數(shù)據(jù)令人震驚,約占平均應(yīng)用程序代碼量的 80%,使這些組件成為一個重大的網(wǎng)絡(luò)安全問

    2024年01月19日
    瀏覽(24)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包