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

神华两学一做网站seo推广学院

神华两学一做网站,seo推广学院,网站域名服务器,品牌形象设计案例网站简介 本文档介绍cmake构建脚本编写#xff0c;包含的一些主要元素和命名规范。 cmake构建脚本编写步骤 cmake构建工具版本要明确 # 命令名字要小写#xff0c;这条语句要求构建工具至少需要版本为3.12或以上 cmake_minimum_required (VERSION 3.12)工程名及库的版本号明确…简介 本文档介绍cmake构建脚本编写包含的一些主要元素和命名规范。 cmake构建脚本编写步骤 cmake构建工具版本要明确 # 命令名字要小写这条语句要求构建工具至少需要版本为3.12或以上 cmake_minimum_required (VERSION 3.12)工程名及库的版本号明确 在编写工程名以及版本号时有几点需要注意 工程名需要大写 版本号需要标明主版本号,次版本号以及补丁版本号,如 project(PROJECT_NAME VERSION 0.0.0) PROJECT_NAME工程的版本号时 0.0.0该版本号会被三个cmake内置变量所继承例如主版本号PROJECT_VERSION_MAJOR0次版本号PROJECT_VERSION_MINOR0补丁版本号PROJECT_VERSION_PATCH0后续可以直接使用这三个内置变量来使用库的版本号 配置构建语言 可以自己根据工程配置需要构建的语言比如CXX表示可以编译C文件C表示可以编译c文件ASM表示可以编译汇编文件 enable_language(CXX C ASM)配置测试用例可选变量 配置自定义变量默认不构建测试用例可以由使用者通过传入参数打开测试用例构建选项。 option(BUILD_SAMPLE Build tests OFF) # 变量名BUILD_SAMPLE 变量说明Build tests 状态 OFF表示不打开 ON表示打开配置打印调试信息 对于一些可能出现的错误或者警告我们可以通过message函数给用户输出一些日志信息。 message(WARNING message text) # 构建时打印警告信息 message(FATAL_ERROR message text) # 产生CMAKE Error时会停止编译构建过程 message(STATUS message text) # 常用于查看变量值类似于编程语言中的 DEBUG 级别信息.配置生成动态库或者静态库 配置内置变量BUILD_SHARED_LIBS设置脚本默认构建库的模式为动态库,用户可以通过传入参数来设置生成的是动态库还是静态库 set(BUILD_SHARED_LIBS TRUE CACHE BOOL If TRUE, this project is built as a shared library, otherwise as a static library)常用变量定义 配置一些后面使用比较频繁的变量变量名需要大写并且变量名不能以CMAKE开头 set(TARGET_NAME project) # 定义变量存放库名 set(TARGET_SAMPLE_NAME test) # 定义变量存放库测试用例名 set(TARGET_SRC_PATH ${CMAKE_CURRENT_SOURCE_DIR}/${TARGET_NAME}) # 定义变量存放库路径 set(TARGET_SRC ${TARGET_SRC_PATH}/source.cpp) # 定义变量存放库源码 if(BUILD_SAMPLE) # 判断是否需要编译测试用例set(TARGET_SAMPLE_SRC ${TARGET_SRC_PATH}/htmlutil.cpp ${TARGET_SRC_PATH}/main.cpp) # 定义变量存放测试程序源码 endif() set(TARGET_INCLUDE ${TARGET_SRC_PATH}) # 定义变量存放编译库或编译测试用例所需要的头文件的路径 set(TARGET_INSTALL_INCLUDEDIR include) # 定义变量存放三方库安装时头文件存放的路径 set(TARGET_INSTALL_BINDIR bin) # 定义变量存放三方库安装时可执行二进制文件存放的路径 set(TARGET_INSTALL_LIBDIR lib) # 定义变量存放三方库安装时库存放的路径引用其他三方库 引用其他三方库的方式有2种 引用其他三方库的源码 源码有cmake构建脚本直接通过add_subdirectory()引用该三方库 add_subdirectory(xxx) # xxx是需要引入的三方库源码文件夹名字源码非cmake构建或者无法通过cmake方式构建的可以将引用三方库的源码添加到本三方库的构建中具体方式 set(SOURCE_NAME source1.cxx source2.cxx ...) # SOURCE_NAME 引入三方库源码变量名称 source1.cxx 引入的源码文件(需要包含文件的路径) add_library(${TARGET_NAME} ${SOURCE_NAME} ...) # TARGET_NAME 本库生成的库名 通过 add_library 添加 引入三方库源码以及本库源码等生成目标TARGET_NAME引用其他三方库的二进制文件(.so) 通过target_link_libraries方法引入此方法需要指定so的路径 target_link_libraries(${TARGET_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/XXX) # 引用当前源码路径下的xxx库使用find_package方法来引用此方法的使用限制参照IDE上find_package使用分析,使用方法 find_package(XXX REQUIRED) # xxx表示要引入的库名编译库并配置库的属性 使用target_***的命令为库配置依赖 add_library(${TARGET_NAME} ${TARGET_SRC}) #生成库会根据内置变量BUILD_SHARED_LIBS变量的值来生成动态库或者静态库 target_include_directories(${TARGET_NAME} PRIVATE ${TARGET_INCLUDE}) #配置构建时所依赖头文件的路径if(BUILD_SHARED_LIBS)set_target_properties(${TARGET_NAME} PROPERTIES VERSION${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH} SOVERSION ${PROJECT_VERSION_MAJOR}) #生成动态库时,为库设置版本号 endif()if(BUILD_SAMPLE)add_executable(${TARGET_SAMPLE_NAME} ${TARGET_SAMPLE_SRC}) #生成测试用例target_include_directories(${TARGET_SAMPLE_NAME} PRIVATE ${TARGET_INCLUDE}) #配置构建时所依赖的头文件路径target_link_libraries(${TARGET_SAMPLE_NAME} PUBLIC ${TARGET_NAME}) #配置所依赖的库 endif()文件安装 支持install库对外提供被find_package的能力install后所有导出的头文件、动态库、静态库、可执行二进制、cmake文件都可以安装到指定路径下 install(TARGETS ${TARGET_NAME} #TARGETS 安装的目标文件可以是可执行文件、动态库、静态库EXPORT ${TARGET_NAME} #需要对外导出的文件该选项用于生成xxxConfig.cmake便于支持find_packagePUBLIC_HEADER DESTINATION ${TARGET_INSTALL_INCLUDEDIR} #头文件路径PRIVATE_HEADER DESTINATION ${TARGET_INSTALL_INCLUDEDIR} #头文件路径RUNTIME DESTINATION ${TARGET_INSTALL_BINDIR} #可执行程序路径LIBRARY DESTINATION ${TARGET_INSTALL_LIBDIR} #动态库路径ARCHIVE DESTINATION ${TARGET_INSTALL_LIBDIR}) #静态库路径install(FILES ${TARGET_SRC_PATH}/xpath_processor.h #FILES 安装文件可以是头文件配置文件等DESTINATION ${TARGET_INSTALL_INCLUDEDIR}/${TARGET_NAME}) # DESTINATION 需要安装到的路径install(EXPORT ${TARGET_NAME}FILE ${TARGET_NAME}Targets.cmake #FILE 安装单个文件 ${TARGET_NAME}Targets.cmake由前面EXPORT参数生成的文件用于find_package查找DESTINATION ${TARGET_INSTALL_LIBDIR}/cmake/${TARGET_NAME} #DESTINATION 需要安装到的路径 )include(CMakePackageConfigHelpers) write_basic_package_version_file( #生成库版本相关文件,用于find_package时可以找到库的版本号${TARGET_NAME}ConfigVersion.cmakeVERSION ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}COMPATIBILITY SameMajorVersion ) configure_package_config_file( #生成库相关文件,用于find_package时可以找到库cmake/PackageConfig.cmake.in ${TARGET_NAME}Config.cmake #cmake/PackageConfig.cmake.in 该文件需要自己编写INSTALL_DESTINATION ${TARGET_INSTALL_LIBDIR}/cmake/${TARGET_NAME} #指定该文件存放的路径 )install(FILES #将上述生成的两个文件安装到指定目录用于find_package${CMAKE_CURRENT_BINARY_DIR}/${TARGET_NAME}Config.cmake${CMAKE_CURRENT_BINARY_DIR}/${TARGET_NAME}ConfigVersion.cmake DESTINATION${TARGET_INSTALL_LIBDIR}/cmake/${TARGET_NAME} )PackageConfig.cmake.in 文件放在CMakeLists.txt同一级目录下的cmake目录下 XXX ├── cmake │ └── PackageConfig.cmake.in ├── CMakeLists.txtPackageConfig.cmake.in内容如下 PACKAGE_INIT #内置宏set(PROJECT_NAME_INCLUDE_DIRS ${PACKAGE_PREFIX_DIR}/include) #配置库头文件路径对外导出变量PROJECT_NAME_INCLUDE_DIRS供外部引用 set(PROJECT_NAME_STATIC_LIBRARIES ${PACKAGE_PREFIX_DIR}/lib/libTARGET_NAME.a) #配置库对外导出变量PROJECT_NAME_LIBRARIES供外部引用 set(PROJECT_NAMESHARED_LIBRARIES ${PACKAGE_PREFIX_DIR}/lib/libTARGET_NAME.so)include(CMakeFindDependencyMacro) include(${CMAKE_CURRENT_LIST_DIR}/TARGET_NAMETargets.cmake) check_required_components(TARGET_NAME) #检查TARGET_NAME为了能让大家更好的学习鸿蒙HarmonyOS NEXT开发技术这边特意整理了《鸿蒙开发学习手册》共计890页希望对大家有所帮助https://qr21.cn/FV7h05 《鸿蒙开发学习手册》 如何快速入门https://qr21.cn/FV7h05 基本概念构建第一个ArkTS应用…… 开发基础知识https://qr21.cn/FV7h05 应用基础知识配置文件应用数据管理应用安全管理应用隐私保护三方应用调用管控机制资源分类与访问学习ArkTS语言…… 基于ArkTS 开发https://qr21.cn/FV7h05 Ability开发UI开发公共事件与通知窗口管理媒体安全网络与链接电话服务数据管理后台任务(Background Task)管理设备管理设备使用信息统计DFX国际化开发折叠屏系列…… 鸿蒙开发面试真题含参考答案https://qr18.cn/F781PH 鸿蒙开发面试大盘集篇共计319页https://qr18.cn/F781PH 1.项目开发必备面试题 2.性能优化方向 3.架构方向 4.鸿蒙开发系统底层方向 5.鸿蒙音视频开发方向 6.鸿蒙车载开发方向 7.鸿蒙南向开发方向
http://www.hkea.cn/news/14257687/

相关文章:

  • 微信网站建设定制北京网站定制流程
  • 深圳做网站开发费用wordpress如何进入仪表盘
  • 酷炫网站源码营销技巧在线观看
  • 有哪些免费推广网站重庆企业网站推广策略
  • 国际网站平台有哪些营销型门户网站建设
  • 博物馆网站页面设计说明重庆建网站的公司集中在哪里
  • 来宾网站建设网址百度刷排名
  • 无忧建站网络工程师是干嘛的
  • 优秀的网站建设推荐超炫的网站模板
  • 安徽省建设厅网站打不开宽带公司排名
  • 课程网站建设的步骤义乌网页设计公司
  • 广东深圳建设工程信息网站wordpress主题创建后门
  • 可信网站查询官网wordpress后台文章自定义字段面板
  • 嘉兴网站建设网址中国建筑官网一测
  • 华企立方网站linux 网站服务器搭建
  • vps 网站 需要绑定域名吗计算机一级考试网站怎么做
  • 装修网站制作seo云优化软件
  • 设计师常上的网站建立网站的条件
  • 天津北京网站建设公司宁波seo教程行业推广
  • 专做企业的p2p网站wordpress 顶部图片
  • 上海seo推广营销型企业网站优化的作用
  • 网站竞价360度实景地图下载
  • 江门网站建设哪家快购物商城html网站代码
  • 香奈儿网站建设wordpress头像不显示
  • 互联网技术的概念seo查询爱站网
  • 网站自动售卡怎么做建设官方网站公司
  • 东莞专业网站设计建站公司免费网站入口网站免费进
  • 公司网站设计与实现的项目建议书电商网站开发的代价
  • asp.net电子商务网站前台模板昌大建设土地建设
  • 用html编写淘宝网站怎么做怎样网站建设与管理