我想在ROS项目common中添加一个.cmake文件,该cmake文件的主要功能是在编译时自动更新调用该cmake文件模块的版本,版本信息存储在调用该camke模块项目的package.xml中,调...
以下是一个例子的.cmake文件:# 获取package.xml文件的路径get_filename_component(PACKAGE_XML_FILE "${PROJECT_SOURCE_DIR}/package.xml" ABSOLUTE)# 获取版本信息execute_process(COMMAND git describe --tagsWORKING_DIRECTORY...
·
以下是一个例子的.cmake文件:
# 获取package.xml文件的路径
get_filename_component(PACKAGE_XML_FILE "${PROJECT_SOURCE_DIR}/package.xml" ABSOLUTE)
# 获取版本信息
execute_process(COMMAND git describe --tags
WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}"
OUTPUT_VARIABLE GIT_TAG
OUTPUT_STRIP_TRAILING_WHITESPACE)
# 获取版本号(从tag中读取)
string(REGEX MATCH "^v[0-9]+\\.[0-9]+\\.[0-9]+" NEW_VERSION ${GIT_TAG})
# 读取package.xml文件的内容
file(STRINGS "${PACKAGE_XML_FILE}" PACKAGE_XML_CONTENTS)
# 更新version节点内的版本信息
foreach(LINE ${PACKAGE_XML_CONTENTS})
string(REGEX REPLACE "^[ ]*<version>[ ]*[0-9]+\\.[0-9]+\\.[0-9]+[ ]*</version>" "<version>${NEW_VERSION}</version>" LINE ${LINE})
set(NEW_CONTENTS "${NEW_CONTENTS}\n${LINE}")
endforeach()
# 将更新后的内容写回到package.xml文件
file(WRITE "${PACKAGE_XML_FILE}" "${NEW_CONTENTS}")
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
已为社区贡献2条内容
所有评论(0)