国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當(dāng)前位置: 首頁(yè) > news >正文

浙江省住房和城鄉(xiāng)建設(shè)廳網(wǎng)站 文件信息流廣告文案

浙江省住房和城鄉(xiāng)建設(shè)廳網(wǎng)站 文件,信息流廣告文案,武漢網(wǎng)絡(luò)推廣專(zhuān)員,網(wǎng)站設(shè)計(jì)的公司排名CMake 引入第三方庫(kù) 在 CMake 中,如何引入第三方庫(kù)是一個(gè)常見(jiàn)的問(wèn)題。在本文中,我們將介紹 CMake 中引入第三方庫(kù)的不同方法,以及它們的優(yōu)缺點(diǎn)。 1. 使用 find_package 命令 在 CMake 中,使用 find_package 命令是最簡(jiǎn)單和最?!?article class="baidu_pl">

CMake 引入第三方庫(kù)

在 CMake 中,如何引入第三方庫(kù)是一個(gè)常見(jiàn)的問(wèn)題。在本文中,我們將介紹 CMake 中引入第三方庫(kù)的不同方法,以及它們的優(yōu)缺點(diǎn)。

1. 使用 find_package 命令

在 CMake 中,使用 find_package 命令是最簡(jiǎn)單和最常用的方式來(lái)引入已安裝的外部庫(kù)。例如,我們可以使用以下命令來(lái)引入 OpenSSL 庫(kù):

find_package(OpenSSL REQUIRED)

在這個(gè)例子中,CMake 將查找已安裝的 OpenSSL 庫(kù),并將其鏈接到我們的項(xiàng)目中。當(dāng)然,我們也可以通過(guò)設(shè)置變量來(lái)指定 OpenSSL 的路徑:

set(OPENSSL_ROOT_DIR /path/to/openssl)
find_package(OpenSSL REQUIRED)

使用 find_package 命令的主要優(yōu)點(diǎn)是它能夠自動(dòng)查找和鏈接已經(jīng)安裝的庫(kù),這使得構(gòu)建過(guò)程更加簡(jiǎn)單和直觀(guān)。

2. 使用 add_subdirectory 命令

在某些情況下,我們可能需要修改外部庫(kù)的源代碼。此時(shí),我們可以將外部庫(kù)的源代碼添加到我們的項(xiàng)目中,然后使用 add_subdirectory 命令來(lái)構(gòu)建外部庫(kù)。例如,我們可以使用以下命令來(lái)引入 JsonCpp 庫(kù):

add_subdirectory(/path/to/jsoncpp)
target_link_libraries(myapp PRIVATE jsoncpp_lib)

在這個(gè)例子中,我們將 JsonCpp 庫(kù)的源代碼添加到我們的項(xiàng)目中,并將 jsoncpp_lib 目標(biāo)鏈接到我們的應(yīng)用程序中。在構(gòu)建我們的項(xiàng)目時(shí),CMake 將自動(dòng)構(gòu)建 JsonCpp 庫(kù),并將其鏈接到我們的應(yīng)用程序中。

使用 add_subdirectory 命令的主要優(yōu)點(diǎn)是,它能夠更方便地管理外部庫(kù)的源代碼。我們可以將外部庫(kù)的源代碼包含在我們的版本控制系統(tǒng)中,以便更好地管理和維護(hù)代碼。但是,使用此方法需要手動(dòng)管理外部庫(kù)的源代碼,因此更新可能會(huì)導(dǎo)致您的項(xiàng)目中出現(xiàn)構(gòu)建問(wèn)題。

3. 使用 ExternalProject_Add 命令

下面是一個(gè)使用 ExternalProject_Add 命令下載和構(gòu)建 Google Test 庫(kù)的例子。在這個(gè)例子中,我們將下載 Google Test 庫(kù)的源代碼,并將其作為獨(dú)立項(xiàng)目構(gòu)建。使用 ExternalProject_Add 命令的主要優(yōu)點(diǎn)在于,它能夠?qū)⑼獠宽?xiàng)目的構(gòu)建過(guò)程與主項(xiàng)目的構(gòu)建過(guò)程隔離開(kāi)來(lái),從而更加靈活地控制外部項(xiàng)目的行為和依賴(lài)關(guān)系。

cmake_minimum_required(VERSION 3.11)include(ExternalProject)# 設(shè)置下載的 URL 和 SHA-256 哈希值
set(GTEST_VERSION "1.11.0")
set(GTEST_URL "https://github.com/google/googletest/archive/refs/tags/release-${GTEST_VERSION}.tar.gz")
set(GTEST_HASH "d722feaac7d6b2270c2f6896d364c3712cf18e9cd963c1e7f56c38e936e13fa1")# 下載和解壓 Google Test 庫(kù)的源代碼
ExternalProject_Add(googletestPREFIX "${CMAKE_CURRENT_BINARY_DIR}/googletest"URL "${GTEST_URL}"URL_HASH SHA256=${GTEST_HASH}DOWNLOAD_DIR "${CMAKE_CURRENT_BINARY_DIR}/googletest/download"SOURCE_DIR "${CMAKE_CURRENT_BINARY_DIR}/googletest/src"BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/googletest/build"CMAKE_ARGS "-DCMAKE_INSTALL_PREFIX=${CMAKE_CURRENT_BINARY_DIR}/googletest/install"
)# 將 Google Test 庫(kù)的頭文件和庫(kù)文件鏈接到主項(xiàng)目中
set(GTEST_INCLUDE_DIR "${CMAKE_CURRENT_BINARY_DIR}/googletest/install/include")
set(GTEST_LIBRARIES "${CMAKE_CURRENT_BINARY_DIR}/googletest/install/lib/libgtest.a")
set(GTEST_MAIN_LIBRARIES "${CMAKE_CURRENT_BINARY_DIR}/googletest/install/lib/libgtest_main.a")target_include_directories(myproject PRIVATE ${GTEST_INCLUDE_DIR})
target_link_libraries(myproject PRIVATE ${GTEST_LIBRARIES} ${GTEST_MAIN_LIBRARIES})

在這個(gè)例子中,我們首先通過(guò)設(shè)置 GTEST_URL 和 GTEST_HASH 變量來(lái)指定要下載的 Google Test 庫(kù)的版本和哈希值。然后,我們使用 ExternalProject_Add 命令來(lái)下載和解壓源代碼,并使用 CMake 構(gòu)建 Google Test 庫(kù)。這里通過(guò)設(shè)置 PREFIX、URL、URL_HASH、DOWNLOAD_DIR、SOURCE_DIR、BINARY_DIR 和 CMAKE_ARGS 等參數(shù)來(lái)指定 ExternalProject_Add 的行為。最后,我們將 Google Test 庫(kù)的頭文件和庫(kù)文件鏈接到主項(xiàng)目中,以便在主項(xiàng)目中使用 Google Test 庫(kù)。

4.使用FetchContent 命令

CMake 也可以通過(guò) include(FetchContent) 命令引入第三方庫(kù)。FetchContent 命令允許您從指定的 URL 或 Git 存儲(chǔ)庫(kù)中提取第三方庫(kù),并將其作為 CMake 項(xiàng)目的子目錄構(gòu)建。使用 FetchContent 命令時(shí),您無(wú)需手動(dòng)下載、解壓縮或設(shè)置外部庫(kù)的構(gòu)建過(guò)程,CMake 會(huì)自動(dòng)執(zhí)行這些任務(wù)。

下面是使用 FetchContent 命令引入第三方庫(kù)的示例:

include(FetchContent)FetchContent_Declare(my_libraryGIT_REPOSITORY https://example.com/my_library.gitGIT_TAG v1.0.0
)FetchContent_GetProperties(my_library)
if(NOT my_library_POPULATED)FetchContent_Populate(my_library)add_subdirectory(${my_library_SOURCE_DIR} ${my_library_BINARY_DIR})
endif()

在這個(gè)示例中,FetchContent_Declare 命令聲明了一個(gè)名為 my_library 的第三方庫(kù),并指定了其 Git 存儲(chǔ)庫(kù)的 URL 和 Git tag。然后,FetchContent_GetProperties 命令獲取指定的第三方庫(kù)的屬性,并檢查它是否已經(jīng)被 FetchContent_Populate 命令所提取。如果尚未提取,FetchContent_Populate 命令將提取指定的庫(kù),并將其作為 CMake 項(xiàng)目的子目錄進(jìn)行構(gòu)建。最后,add_subdirectory 命令將提取的第三方庫(kù)的源代碼目錄和二進(jìn)制目錄添加到 CMake 項(xiàng)目中。

使用 FetchContent 命令的優(yōu)點(diǎn)是它使得引入第三方庫(kù)更加方便,并且使得與外部庫(kù)的集成更加簡(jiǎn)單。同時(shí),使用 FetchContent 命令時(shí),您可以很容易地在您的 CMake 項(xiàng)目中指定外部庫(kù)的版本和源代碼位置。

5.總結(jié)

當(dāng)引入第三方庫(kù)時(shí),CMake 提供了多種不同的方式。每種方式都有自己的優(yōu)缺點(diǎn),具體取決于項(xiàng)目的需求和環(huán)境。下面是一些不同的引入第三方庫(kù)的方法及其優(yōu)缺點(diǎn):

1、find_package 命令
find_package 命令是一種在 CMake 項(xiàng)目中查找已經(jīng)安裝的第三方庫(kù)的方法。這種方法適用于大多數(shù)開(kāi)源庫(kù),因?yàn)樗鼈兺ǔR呀?jīng)被打包為二進(jìn)制發(fā)行版,可以通過(guò)包管理器或官方網(wǎng)站下載并安裝。優(yōu)點(diǎn):使用已經(jīng)安裝的二進(jìn)制發(fā)行版,構(gòu)建速度快,不需要從源代碼構(gòu)建。缺點(diǎn):無(wú)法使用最新版本的庫(kù),需要手動(dòng)安裝和更新庫(kù)。2、add_subdirectory 命令
add_subdirectory 命令是一種在 CMake 項(xiàng)目中添加外部庫(kù)源代碼的方法。這種方法適用于已經(jīng)包含在您的項(xiàng)目中的外部庫(kù),或者您需要從源代碼構(gòu)建外部庫(kù)的情況。優(yōu)點(diǎn):直接在您的項(xiàng)目中構(gòu)建外部庫(kù),方便修改外部庫(kù)源代碼。缺點(diǎn):需要手動(dòng)更新外部庫(kù),庫(kù)的更新可能會(huì)導(dǎo)致項(xiàng)目中的構(gòu)建問(wèn)題。3、ExternalProject_Add 命令
ExternalProject_Add 命令是一種將外部庫(kù)作為獨(dú)立項(xiàng)目下載和構(gòu)建的方法。這種方法適用于需要與外部庫(kù)進(jìn)行集成,但是不想將外部庫(kù)的源代碼包含在您的項(xiàng)目中。優(yōu)點(diǎn):不需要在您的項(xiàng)目中包含外部庫(kù)的源代碼,允許更好的代碼分離和依賴(lài)管理。缺點(diǎn):需要從頭開(kāi)始構(gòu)建外部庫(kù),構(gòu)建速度可能很慢。同時(shí),需要手動(dòng)更新外部庫(kù),庫(kù)的更新可能會(huì)導(dǎo)致項(xiàng)目中的構(gòu)建問(wèn)題。4、FetchContent 命令
FetchContent 命令是一種從外部 URL 或 Git 存儲(chǔ)庫(kù)中提取源代碼的方法。這種方法適用于不需要將外部庫(kù)作為獨(dú)立項(xiàng)目構(gòu)建的情況,但是需要從源代碼構(gòu)建外部庫(kù)。優(yōu)點(diǎn):與 ExternalProject_Add 相比,構(gòu)建速度更快,而且不需要獨(dú)立的構(gòu)建目錄。缺點(diǎn):需要手動(dòng)更新外部庫(kù),庫(kù)的更新可能會(huì)導(dǎo)致項(xiàng)目中的構(gòu)建問(wèn)題。

總之,選擇適當(dāng)?shù)姆椒ㄈQ于項(xiàng)目的需求和環(huán)境。對(duì)于大多數(shù)情況,find_package 命令是首選方法,因?yàn)樗亲詈?jiǎn)單和最常用的方式。對(duì)于需要修改外部庫(kù)源代碼的情況,使用 add_subdirectory 命令可以更方便地管理代碼。對(duì)于需要將外部庫(kù)作為獨(dú)立項(xiàng)目構(gòu)建的情況,使用 ExternalProject_Add 命令是一種好的選擇。這種方法的優(yōu)點(diǎn)在于,它能夠?qū)⑼獠繋?kù)的構(gòu)建過(guò)程與您的項(xiàng)目分離,使代碼更易于管理和維護(hù)。不過(guò),這種方法的缺點(diǎn)是需要手動(dòng)更新外部庫(kù),更新可能會(huì)導(dǎo)致您的項(xiàng)目中出現(xiàn)構(gòu)建問(wèn)題。

如果您不需要將外部庫(kù)作為獨(dú)立項(xiàng)目構(gòu)建,但是需要從源代碼構(gòu)建外部庫(kù),那么 FetchContent 命令是一種不錯(cuò)的選擇。這種方法與 ExternalProject_Add 相比,構(gòu)建速度更快,而且不需要獨(dú)立的構(gòu)建目錄。但是,需要注意的是,需要手動(dòng)更新外部庫(kù),更新可能會(huì)導(dǎo)致您的項(xiàng)目中出現(xiàn)構(gòu)建問(wèn)題。

綜上所述,對(duì)于大多數(shù)情況,使用 find_package 命令是最簡(jiǎn)單和最常用的方式,因?yàn)樗軌蜃詣?dòng)查找已經(jīng)安裝的外部庫(kù)。對(duì)于需要修改外部庫(kù)源代碼的情況,使用 add_subdirectory 命令可以更方便地管理代碼。對(duì)于需要將外部庫(kù)作為獨(dú)立項(xiàng)目構(gòu)建的情況,使用 ExternalProject_Add 命令是一種好的選擇。對(duì)于不需要將外部庫(kù)作為獨(dú)立項(xiàng)目構(gòu)建,但是需要從源代碼構(gòu)建外部庫(kù)的情況,使用 FetchContent 命令是一種不錯(cuò)的選擇。

http://aloenet.com.cn/news/37683.html

相關(guān)文章:

  • wordpress更新的文章編輯器不好用手機(jī)優(yōu)化軟件哪個(gè)好用
  • 網(wǎng)站推廣網(wǎng)電商網(wǎng)站對(duì)比
  • 做網(wǎng)站需要買(mǎi)服務(wù)器嗎seo的中文是什么
  • 有沒(méi)有什么做統(tǒng)計(jì)的網(wǎng)站愛(ài)站數(shù)據(jù)
  • 非凡網(wǎng)站建設(shè)平臺(tái)網(wǎng)頁(yè)seddog站長(zhǎng)之家
  • wordpress的根目錄搜狗優(yōu)化排名
  • 萊西市城鄉(xiāng)建設(shè)局網(wǎng)站站長(zhǎng)工具在線(xiàn)查詢(xún)
  • 怎樣建設(shè)微網(wǎng)站首頁(yè)網(wǎng)站數(shù)據(jù)統(tǒng)計(jì)工具
  • 記事本做網(wǎng)站格式外貿(mào)seo公司
  • 20g虛擬主機(jī)建設(shè)網(wǎng)站b站推廣網(wǎng)站入口202
  • 域名換了網(wǎng)站需要備案么鄭州seo代理公司
  • 程序員做的導(dǎo)航網(wǎng)站平臺(tái)推廣怎么做
  • 牌具網(wǎng)站廣告怎么做云優(yōu)客seo排名公司
  • 微博分享的網(wǎng)站怎么做亞洲衛(wèi)星電視網(wǎng)參數(shù)表
  • 冷色網(wǎng)站鄭州seo價(jià)格
  • 焦作河南網(wǎng)站建設(shè)品牌策略
  • 自己做新聞網(wǎng)站找客戶(hù)的十大方法
  • 網(wǎng)頁(yè)游戲開(kāi)服表怎么關(guān)閉班級(jí)優(yōu)化大師使用指南
  • 做網(wǎng)站素材在哪里找網(wǎng)站seo平臺(tái)
  • 網(wǎng)站建設(shè)公司的運(yùn)營(yíng)方式中國(guó)足彩網(wǎng)競(jìng)彩推薦
  • 中國(guó)城鄉(xiāng)住房和建設(shè)部網(wǎng)站首頁(yè)如何快速推廣自己的品牌
  • 珠海網(wǎng)站建站流量寶
  • 做網(wǎng)站是什么鬼做國(guó)外網(wǎng)站
  • 做獨(dú)立網(wǎng)站給你百度競(jìng)價(jià)推廣方案的制定
  • 做網(wǎng)站百度新聞源合肥關(guān)鍵詞排名
  • 國(guó)際貿(mào)易網(wǎng)站排名最新網(wǎng)絡(luò)營(yíng)銷(xiāo)方式有哪些
  • 做網(wǎng)站虛擬主機(jī)怎么選擇技成培訓(xùn)網(wǎng)
  • 建網(wǎng)站的軟件優(yōu)幫云網(wǎng)站設(shè)計(jì)制作在哪里找
  • 網(wǎng)站商城系統(tǒng)建設(shè)方案新媒體運(yùn)營(yíng)主要做什么
  • 企業(yè)網(wǎng)站宣傳冊(cè)應(yīng)該哪個(gè)部門(mén)做it培訓(xùn)機(jī)構(gòu)