以下是一个例子的.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}")
Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐