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

东莞做网站软件建分类信息网站

东莞做网站软件,建分类信息网站,ui设计的工作流程分为哪三类,wordpress如何配置opcache准备 windows下设置文件的版本需要通过VERSIONINFO接口#xff0c;详情参考VERSIONINFO resource。这里我们根据模板做了一定的修改。 1 VERSIONINFOFILEVERSION ${GIT_VERSION} //文件版本号#xff0c;必填。以,分隔#xff0c;输出以.分隔。这里是取CMakeLists里的GIT_…准备 windows下设置文件的版本需要通过VERSIONINFO接口详情参考VERSIONINFO resource。这里我们根据模板做了一定的修改。 1 VERSIONINFOFILEVERSION ${GIT_VERSION} //文件版本号必填。以,分隔输出以.分隔。这里是取CMakeLists里的GIT_VERSION变量PRODUCTVERSION ${GIT_VERSION} //产品版本号必填。以,分隔。虽然没起作用见下面的ProductVersionFILEFLAGSMASK 0x17L #ifdef _DEBUGFILEFLAGS 0x1L #elseFILEFLAGS 0x0L #endifFILEOS 0x4LFILETYPE 0x0LFILESUBTYPE 0x0L BEGINBLOCK StringFileInfoBEGINBLOCK 040904b0BEGINVALUE FileDescription, MyLibrary Binary //文件说明VALUE FileVersion, 1.1.1 //文件版本好像没啥用只与FILEVERSION相关VALUE InternalName, //VALUE LegalCopyright, Copyright (C) 2019VALUE OriginalFilename, VALUE ProductName, 1234 //产品名称VALUE ProductVersion, 1.3.4.5.6 //产品版本与PRODUCTVERSION无关,直接输出 //${PROJECT_VERSION_MAJOR},${PROJECT_VERSION_MINOR},${PROJECT_VERSION_PATCH},${PROJECT_VERSION_TWEAK}ENDENDBLOCK VarFileInfoBEGINVALUE Translation, 0x409, 1200END END 注意事项 FILEVERSION和PRODUCTVERSION为必填项。内容以,分隔输出以.分隔(如设置为1,1,3,5则实际输出版本为1.1.3.5)。可以直接是一整个变量也可以是多个变量以,隔开。而后面BLOCK块中内容都是全量输出不做调整。目前实验显示FILEVERSION内容管理实际输出的文件版本号而产品版本号不由PRODUCTVERSION管理反而由后面BLOK块中的ProductVersion控制。不知道是为啥。 调用versioninfo 前面已经准备号了versioninfo.接下来需要在CMakeLists中接入versioninfo。 首先将上面的versioninfo模板内容写入到文件中并命名为versioninfo.rc(名字不重要只要后续引用这个文件即可)先在CMakeLists中手动写一个版本号(动态获取后面介绍),GIT_VERSION与versioninfo.rc中引用的变量名保持一致 set(GIT_VERSION 1,2,0,4) 通过config_file()命令将文件拷贝到指定文件或目录下。这里使用的时MSVC编译器所以对MSVC进行判断了。 if(MSVC)set(VERSIONINFO_RC ${CMAKE_BINARY_DIR}/versioninfo.rc)configure_file(${CMAKE_SOURCE_DIR}/versioninfo.rc${VERSIONINFO_RC}) endif() 创建输出文件(dll/exe)时包含versioninfo.rc资源 add_executable(${PROJECT_NAME} ${SOURCES} ${VERSIONINFO_RC}) cmake之后编译查看生成的可执行文件详细信息内容。 动态获取版本号 这里采用的是cmake的execute_process运行git命令获取版本并对结果进行截取组合达到我们想要的内容。 execute_process表示运行命令可以与git其他命令结合获取其他信息。 ####################### ####获取git版本######### ####################### #设置默认版本 set(GIT_VERSION 1.0.0) #通过git命令获取版本 execute_process(COMMAND git describe --tags OUTPUT_VARIABLE GIT_DESCRIBE)# set(GIT_DESCRIBE ${GIT_DESCRIBE}-8-) #查找版本 string(REGEX MATCH [0-9]\\.[0-9]\\.[0-9] GIT_DESCRIBE_VERSION ${GIT_DESCRIBE}) message(STATUS GIT_DESCRIBE_VERSION${GIT_DESCRIBE_VERSION}) if(NOT ${GIT_DESCRIBE_VERSION} EQUAL ) set(GIT_VERSION ${GIT_DESCRIBE_VERSION}) endif()#查找提交次数 string(REGEX MATCHALL -([0-9])- MATCH_COMMIT_RET ${GIT_DESCRIBE}) message(STATUS MATCH_COMMIT_RET${MATCH_COMMIT_RET}) list(LENGTH MATCH_COMMIT_RET MATCH_COMMIT_RET_LEN)message(STATUS MATCH_COMMIT_RET_LEN${MATCH_COMMIT_RET_LEN})if(${MATCH_COMMIT_RET_LEN} GREATER 0) #拿到最后一个匹配项 math(EXPR MATCH_COMMIT_RET_LEN ${MATCH_COMMIT_RET_LEN} - 1) message(STATUS MATCH_COMMIT_RET_LEN${MATCH_COMMIT_RET_LEN}) list(GET MATCH_COMMIT_RET ${MATCH_COMMIT_RET_LEN} MATCH_LAST) #获取 string(REGEX REPLACE -(.)- \\1 GIT_COMMIT_COUNT ${MATCH_LAST}) set(GIT_VERSION ${GIT_VERSION}.${GIT_COMMIT_COUNT}) else()#没有则默认写0 set(GIT_VERSION ${GIT_VERSION}.0) endif()string(REPLACE . , GIT_VERSION ${GIT_VERSION}) # set(GIT_VERSION 1,2,0) # message(STATUS final version is ${GIT_VERSION}) ##################################END####################################### 缺陷 这里因为是按照我们设想的git tag版本格式(x.x.x)并根据git describe会自动返回version-提交次数-g当前提交hash内容所写的。目的就是提炼成version.提交次数也就是x.x.x.x形式。所以这就要求在打tag的时候需要注意一定的格式否则这个代码将不起作用。 此外git describe对于轻量标签不起作用只有附注标签生效。 完整代码 cmake_minimum_required(VERSION 3.10)project(gitversion)####################### ####获取git版本######### ####################### #设置默认版本 set(GIT_VERSION 1.0.0) #通过git命令获取版本 execute_process(COMMAND git describe --tagsOUTPUT_VARIABLE GIT_DESCRIBE)# set(GIT_DESCRIBE ${GIT_DESCRIBE}-8-) #查找版本 string(REGEX MATCH [0-9]\\.[0-9]\\.[0-9] GIT_DESCRIBE_VERSION ${GIT_DESCRIBE}) message(STATUS GIT_DESCRIBE_VERSION${GIT_DESCRIBE_VERSION}) if(NOT ${GIT_DESCRIBE_VERSION} EQUAL )set(GIT_VERSION ${GIT_DESCRIBE_VERSION}) endif()#查找提交次数 string(REGEX MATCHALL -([0-9])- MATCH_COMMIT_RET ${GIT_DESCRIBE}) message(STATUS MATCH_COMMIT_RET${MATCH_COMMIT_RET}) list(LENGTH MATCH_COMMIT_RET MATCH_COMMIT_RET_LEN)message(STATUS MATCH_COMMIT_RET_LEN${MATCH_COMMIT_RET_LEN})if(${MATCH_COMMIT_RET_LEN} GREATER 0)#拿到最后一个匹配项math(EXPR MATCH_COMMIT_RET_LEN ${MATCH_COMMIT_RET_LEN} - 1)message(STATUS MATCH_COMMIT_RET_LEN${MATCH_COMMIT_RET_LEN})list(GET MATCH_COMMIT_RET ${MATCH_COMMIT_RET_LEN} MATCH_LAST)#获取string(REGEX REPLACE -(.)- \\1 GIT_COMMIT_COUNT ${MATCH_LAST})set(GIT_VERSION ${GIT_VERSION}.${GIT_COMMIT_COUNT}) else()#没有则默认写0set(GIT_VERSION ${GIT_VERSION}.0) endif()string(REPLACE . , GIT_VERSION ${GIT_VERSION}) # set(GIT_VERSION 1,2,0) # message(STATUS final version is ${GIT_VERSION}) ##################################END########################################这里需要注意按顺序 if(MSVC)set(VERSIONINFO_RC ${CMAKE_BINARY_DIR}/versioninfo.rc)configure_file(${CMAKE_SOURCE_DIR}/versioninfo.rc${VERSIONINFO_RC}) endif()file(GLOB SOURCES *.cpp) add_executable(${PROJECT_NAME} ${SOURCES} ${VERSIONINFO_RC})target_include_directories(${PROJECT_NAME} PRIVATE${CMAKE_SOURCE_DIR}) 注意事项 需要注意这里add_executable中引用了versioninfo.rc文件而versioninfo.rc文件中引用了GIT_VERSION变量所以GIT_VERSION变量的获取需要放在最前面然后是引入versioninfo.rc最后是add_executable否则会导致编译时GIT_VERSION变量内容为空编译不过。 其他 另一种方式是通过cmake的PROJECT_VERSION,PROJECT_VERSION_MAJOR, PROJECT_VERSION_MINOR, PROJECT_VERSION_PATCH, PROJECT_VERSION_TWEAK来获取,但是无法动态调整版本号需要手动修改。 代码如下 cmake_minimum_required(VERSION 3.10)project(cmakeversion VERSION 1.2.5.8)#这里需要注意按顺序 if(MSVC)set(VERSIONINFO_RC ${CMAKE_BINARY_DIR}/versioninfo.rc)configure_file(${CMAKE_SOURCE_DIR}/versioninfo.rc${VERSIONINFO_RC}) endif()file(GLOB SOURCES *.cpp) add_executable(${PROJECT_NAME} ${SOURCES} ${VERSIONINFO_RC})target_include_directories(${PROJECT_NAME} PRIVATE${CMAKE_SOURCE_DIR})include(CMakePackageConfigHelpers) configure_package_config_file(Config.cmake.in${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmakeINSTALL_DESTINATION lib/cmake/${PROJECT_NAME}) write_basic_package_version_file(${PROJECT_NAME}ConfigVersion.cmakeVERSION ${PACKAGE_VERSION} COMPATIBILITY AnyNewerVersion )install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmakeDESTINATION lib/cmake/${PROJECT_NAME} )message(status version${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}.${PROJECT_VERSION_TWEAK}) 此外需要引用Config.cmake.in PACKAGE_INITset_and_check(CMAKEVERSION_INCLUDE_DIR PACKAGE_INCLUDE_INSTALL_DIR) set_and_check(CMAKEVERSION_SYSCONFIG_DIR PACKAGE_SYSCONFIG_INSTALL_DIR)check_required_components(Cmakeversion)
http://wiki.neutronadmin.com/news/436602/

相关文章:

  • 外贸做那种网站有哪些滕州网站建设公司
  • 长春网站建设长春wordpress随机文章列表
  • 设计网站登录框ps怎么做深圳企业网站制作报价
  • 团购网站开发需要多久网站导航的建设
  • 重庆网站建设找重庆最佳科技wordpress脚注更改
  • 摄影网站大全自己网站做反链
  • 百度 网站 移动端来几个关键词兄弟们
  • 青海省建设厅建管处网站网站短链接怎么做的
  • 广东省中山市网站织梦自定义表单做网站在线留言
  • 网站论坛建设方案网站建设实习报告范文
  • 茶楼网站网站psd设计稿
  • 阿里云建设网站好吗设计制作过程
  • 郑州做网站找维诺建设网站类型
  • 建筑人才招聘哪个网站最好用dw做php网站
  • 电商专业论文题目天津seo方案
  • 企业网站备案 淘宝客国家备案网查询
  • wordpress会员网站装修公司的口碑排名
  • 手表网站欧米茄官网网站建站公司一站式服务
  • 移动互联网站开发与软件开发网站建设与管理logo
  • 织梦安防网站源码网站做短视频业务许可
  • 德州力点科技 网站建设北京 网站建设|小程序|软件开发|app开发公司
  • 四博网站备案wordpress 登录小工具
  • 迁安建设局网站网站建设当前位置图标
  • 子域名网址查询百度一键优化
  • dede织梦网站wordpress跳转外部链接
  • 国外网站怎么做引流在建设局网站上怎么样总监解锁
  • 帝国cms网站公告怎么做wordpress安全设置方法
  • 长春移动端网站设计随州网站建设公司
  • 洞口建设局网站WordPress小工具可以做什么
  • 网站如何实现多语言asp.net 网站开发架构