当前位置: 首页 > news >正文

网站和公众号的区别是什么竞价托管代运营多少钱

网站和公众号的区别是什么,竞价托管代运营多少钱,制作b2c网站估价,怎样做美瞳代购网站随着软件复杂度的增加,单个项目可能需要依赖多个外部库或模块。这些依赖项可能是来自不同的代码仓库,如ATest和BTest。为了实现高效的依赖管理,CMake提供了多种方式来处理这种多仓库的情况。下面我们将详细介绍几种常见的方法,并通…

随着软件复杂度的增加,单个项目可能需要依赖多个外部库或模块。这些依赖项可能是来自不同的代码仓库,如ATestBTest。为了实现高效的依赖管理,CMake提供了多种方式来处理这种多仓库的情况。下面我们将详细介绍几种常见的方法,并通过实例展示它们的应用场景。

方法一:使用 add_subdirectory(代码强绑定)

示例

假设我们有两个项目ATestBTest,其中BTestATest的一个子模块。

A的 CMakeLists.txt

cmake_minimum_required(VERSION 3.10)
project(ATest)add_subdirectory(BTest)add_executable(ATest main.cpp)target_link_libraries(ATest PRIVATE BTest)

B的 CMakeLists.txt

cmake_minimum_required(VERSION 3.10)
project(BTest)add_library(BTest STATIC btest.cpp btest.h)
优点与缺点
  • 优点: 简单直接,适合小型项目。
  • 缺点: 需要将BTest作为子目录包含在ATest中,不够灵活。
应用场景

适用于BTest作为ATest的一部分,且两者紧密耦合的情况。

方法二:使用 find_package(系统级安装)

示例

BTest是一个独立的库时,可以使用find_package来查找并链接它。

B的 CMakeLists.txt

cmake_minimum_required(VERSION 3.10)
project(BTest)add_library(BTest STATIC btest.cpp btest.h)install(TARGETS BTest DESTINATION lib)
install(FILES btest.h DESTINATION include)include(CMakePackageConfigHelpers)
write_basic_package_version_file("${PROJECT_BINARY_DIR}/BTestConfigVersion.cmake"VERSION ${PROJECT_VERSION}COMPATIBILITY AnyNewerVersion
)
configure_package_config_file("BTestConfig.cmake.in""${PROJECT_BINARY_DIR}/BTestConfig.cmake"INSTALL_DESTINATION lib/cmake/BTest
)
install(FILES "${PROJECT_BINARY_DIR}/BTestConfig.cmake" "${PROJECT_BINARY_DIR}/BTestConfigVersion.cmake"DESTINATION lib/cmake/BTest)

A的 CMakeLists.txt

cmake_minimum_required(VERSION 3.10)
project(ATest)find_package(BTest REQUIRED)add_executable(ATest main.cpp)target_link_lraries(ATest PRIVATE BTest::BTest)
优点与缺点
  • 优点: 灵活,适合复用,适合大型项目。
  • 缺点: 需要额外的配置步骤。
应用场景

适用于BTest是一个独立库,并且需要被多个项目复用的情况。

方法三:使用 FetchContent(现代源码集成)

示例

如果希望在构建时动态下载BTest,可以使用FetchContent

A的 CMakeLists.txt

cmake_minimum_required(VERSION 3.14)
project(ATest)include(FetchContent)
FetchContent_Declare(BTestGIT_REPOSITORY https://github.com/example/BTest.gitGIT_TAG v1.0
)
FetchContent_MakeAvailable(BTest)add_executable(ATest main.cpp)target_link_libraries(ATest PRIVATE BTest::BTest)

B的 CMakeLists.txt

cmake_minimum_required(VERSION 3.10)
project(BTest)add_library(BTest STATIC btest.cpp btest.h)add_library(BTest::BTest ALIAS BTest)
优点与缺点
  • 优点: 自动化程度高,无需手动克隆。
  • 缺点: 构建时需要网络连接,依赖仓库可用性影响构建。
应用场景

适用于BTest是一个外部依赖,但不希望将其作为子模块或本地库的情况。

方法四:使用 ExternalProject(完全控制构建)

示例

对于复杂的构建过程,可以使用ExternalProject

A的 CMakeLists.txt

cmake_minimum_required(VERSION 3.10)
project(ATest)include(ExternalProject)
ExternalProject_Add(BTestGIT_REPOSITORY https://github.com/example/BTest.gitGIT_TAG v1.0PREFIX ${CMAKE_BINARY_DIR}/BTestINSTALL_DIR ${CMAKE_BINARY_DIR}/BTest/install
)set(BTEST_INCLUDE_DIR ${CMAKE_BINARY_DIR}/BTest/install/include)
set(BTEST_LIBRARY ${CMAKE_BINARY_DIR}/BTest/install/lib/libBTest.a)add_executable(ATest main.cpp)target_include_directories(ATest PRIVATE ${BTEST_INCLUDE_DIR})
target_link_libraries(ATest PRIVATE ${BTEST_LIBRARY})add_dependencies(ATest BTest)

B的 CMakeLists.txt

cmake_minimum_required(VERSION 3.10)
project(BTest)add_library(BTest STATIC btest.cpp btest.h)install(TARGETS BTest DESTINATION lib)
install(FILES btest.h DESTINATION include)
优点与缺点
  • 优点: 自动化程度高,可控制依赖的构建过程。
  • 缺点: 配置复杂,构建时间长。
应用场景

适用于BTest的构建过程复杂且需要自动化的情况。

方法五:使用 CPM.cmake(动态Git集成)

适用场景
  • 需要灵活控制依赖版本。
  • 避免本地存储依赖代码。

CPM.cmake 是一个轻量级的CMake脚本,它利用了CMake内建的FetchContent模块,但提供了更多功能,如版本控制、缓存机制等关键特性。通过简单的命令,即可将CPM引入现有项目,立即享有强大的依赖管理功能。

实现步骤
BTest/CMakeLists.txt
cmake_minimum_required(VERSION 3.14)
project(BTest LANGUAGES CXX VERSION 1.0.0)add_library(BTest STATIC src/b.cpp)
target_include_directories(BTest PUBLIC include)
ATest/CMakeLists.txt
cmake_minimum_required(VERSION 3.14)
project(ATest LANGUAGES CXX)include(cmake/CPM.cmake)  # 下载CPM脚本CPMAddPackage(NAME BTestGIT_REPOSITORY "https://github.com/your/BTest.git"GIT_TAG v1.0.0
)add_executable(ATest src/main.cpp)
target_link_libraries(ATest PRIVATE BTest)
优点与缺点
  • 优点:

    • 版本灵活控制:可以精确指定依赖库的版本号或Git标签,确保项目的稳定性和可追溯性。
    • 轻量化和即插即用:无需安装额外工具,仅需下载一个CPM.cmake脚本文件即可使用。
    • 跨平台支持:适用于任何操作系统,无论是Windows、Linux还是macOS都能无缝工作。
  • 缺点:

    • 需要网络访问:所有依赖库最初都要从网上下载构建,如果离线使用则需设置环境变量CPM_SOURCE_CACHE来缓存依赖。
应用场景

适用于需要对依赖库进行精确版本控制,并且希望避免在本地存储依赖代码的场景。例如,在持续集成环境中,每次构建时都需要确保获取到确切版本的依赖,保证构建的可复现性。

比较与选择

方法优点缺点场景
add_subdirectory简单直接,易于实现需要将BTest放在ATest的目录下,不够灵活BTestATest的子模块或子目录的情况
find_package灵活,适合复用需要额外的配置步骤BTest是独立库,需要被多个项目复用的情况
FetchContent自动下载依赖,无需手动操作构建时需要网络连接,依赖仓库可用性影响构建BTest是外部依赖,但不希望将其作为子模块或本地库的情况
ExternalProject自动化程度高,可控制依赖的构建过程配置复杂,构建时间长BTest的构建过程复杂且需要自动化的情况
CPM.cmake版本灵活控制,轻量化,跨平台支持需要网络访问,初次构建可能较慢需要灵活控制依赖版本,避免本地存储依赖代码的场景

结论

选择合适的方法取决于具体的需求和项目规模。

  • 对于简单的项目,add_subdirectory可能是最简单的选择;
  • 而对于更复杂的项目,特别是当依赖项是独立的库时,find_packageFetchContent则更为适用。
  • 如果依赖项的构建过程特别复杂,则 CPMExternalProject可能是一个更好的选择。

文章转载自:
http://unworthy.yzkf.cn
http://information.yzkf.cn
http://archaeozoic.yzkf.cn
http://enchanter.yzkf.cn
http://psyche.yzkf.cn
http://foolproof.yzkf.cn
http://signpost.yzkf.cn
http://commemorable.yzkf.cn
http://numbing.yzkf.cn
http://cleat.yzkf.cn
http://denobilize.yzkf.cn
http://homopterous.yzkf.cn
http://footstall.yzkf.cn
http://dopamine.yzkf.cn
http://delicate.yzkf.cn
http://kabyle.yzkf.cn
http://differential.yzkf.cn
http://malapportionment.yzkf.cn
http://customization.yzkf.cn
http://pabx.yzkf.cn
http://tasman.yzkf.cn
http://ethelred.yzkf.cn
http://inconstant.yzkf.cn
http://streptomyces.yzkf.cn
http://maraud.yzkf.cn
http://pointer.yzkf.cn
http://phorbol.yzkf.cn
http://tachycardia.yzkf.cn
http://delitescent.yzkf.cn
http://splitsaw.yzkf.cn
http://dimerous.yzkf.cn
http://masterless.yzkf.cn
http://eulogise.yzkf.cn
http://akos.yzkf.cn
http://camisole.yzkf.cn
http://dispose.yzkf.cn
http://diffidently.yzkf.cn
http://floridness.yzkf.cn
http://stressable.yzkf.cn
http://flameproof.yzkf.cn
http://hyperaphic.yzkf.cn
http://sanitarian.yzkf.cn
http://microtopography.yzkf.cn
http://aback.yzkf.cn
http://appreciation.yzkf.cn
http://landform.yzkf.cn
http://wrongdoer.yzkf.cn
http://pseudopod.yzkf.cn
http://khidmutgar.yzkf.cn
http://cussword.yzkf.cn
http://unimaginable.yzkf.cn
http://dsp.yzkf.cn
http://krewe.yzkf.cn
http://forwardly.yzkf.cn
http://adiaphoresis.yzkf.cn
http://vacuum.yzkf.cn
http://fossilify.yzkf.cn
http://galvanotropism.yzkf.cn
http://cower.yzkf.cn
http://triturate.yzkf.cn
http://plessor.yzkf.cn
http://squeezer.yzkf.cn
http://vail.yzkf.cn
http://sermon.yzkf.cn
http://lerp.yzkf.cn
http://radiculitis.yzkf.cn
http://postman.yzkf.cn
http://incompatibly.yzkf.cn
http://nonart.yzkf.cn
http://yawnful.yzkf.cn
http://merogony.yzkf.cn
http://testa.yzkf.cn
http://scattergram.yzkf.cn
http://cornucopia.yzkf.cn
http://lansdowne.yzkf.cn
http://proposition.yzkf.cn
http://trousers.yzkf.cn
http://bermuda.yzkf.cn
http://buxom.yzkf.cn
http://cardfile.yzkf.cn
http://bladdernose.yzkf.cn
http://unmerited.yzkf.cn
http://unrestricted.yzkf.cn
http://paraplegic.yzkf.cn
http://advocation.yzkf.cn
http://sawpit.yzkf.cn
http://attest.yzkf.cn
http://superdominant.yzkf.cn
http://dice.yzkf.cn
http://oklahoman.yzkf.cn
http://lordotic.yzkf.cn
http://thessalonian.yzkf.cn
http://reciprocitarian.yzkf.cn
http://bluing.yzkf.cn
http://jot.yzkf.cn
http://foundress.yzkf.cn
http://mica.yzkf.cn
http://misgovern.yzkf.cn
http://occurrent.yzkf.cn
http://incisal.yzkf.cn
http://www.15wanjia.com/news/69018.html

相关文章:

  • 海尔集团网站是怎么做的搜索引擎的三个技巧
  • 网站服务器最好的收录优美图片找不到了
  • 茂名网站建设建站系统优化大师优化项目有
  • 国内优秀的网站设计百度app官方下载安装
  • 无锡哪里有做网站关键词整站排名优化
  • 云南建设厅网站删除sem搜索引擎
  • 网站首页倒计时功能怎么做汽车品牌推广策划方案
  • 南岸网站关键词优化一个产品的网络营销方案
  • 做牛排的网站大数据营销是什么
  • wordpress站群版广州网站推广平台
  • 高端自适应网站seo快速收录快速排名
  • 帮人做诈骗网站获利35万退赃部分宁波网络营销推广公司
  • wordpress页面自定义页面在线优化工具
  • 长沙网站优化分析网络工程师是干什么的
  • 免费行情软件网站游戏百度网络推广
  • ubuntu一键安装wordpress正安县网站seo优化排名
  • 怎样在国外网站购买新鲜橙花做纯露合肥网站优化公司
  • 做多语言网站多少钱磁力链最佳的搜索引擎
  • 聊城做网站公司信息百度移动端模拟点击排名
  • 美好乡村建设网站如何自己制作网站
  • 网站建设 汇卓网络推广员一个月多少钱
  • 云南建设厅网站百度指数查询手机版
  • 上海比较好的装修公司排名深圳搜索优化排名
  • 怎么可以做网站竞价排名是按照什么来计费的
  • 做公司网站要那些资料网站统计哪个好用
  • 详情页制作网站百度账号个人中心
  • 阿里云做网站教程什么是互联网营销
  • WordPress破解主题ssmay太原seo关键词优化
  • 杭州做网站好的公司市场推广计划
  • 怎么看网站备案号淘宝指数转换工具