You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CMakeLists.txt中时间字符串处理:自动设置两个月后过期日期

在CMakeLists.txt中生成两个月后的过期日期

CMake本身没有内置的日期运算能力,得借助系统自带的命令行工具实现,下面是跨平台的实用方案:

Unix-like系统(Linux/macOS)

利用date命令直接计算相对日期,支持自定义输出格式。通过CMake的execute_process调用命令,把结果存到变量里:

# 获取两个月后的日期(格式可自行调整,比如%Y%m%d、%Y-%m-%d %H:%M:%S等)
execute_process(
    COMMAND date -d "+2 months" +"%Y-%m-%d"
    OUTPUT_VARIABLE EXPIRY_DATE
    OUTPUT_STRIP_TRAILING_WHITESPACE  # 去除输出末尾的换行符
)

# 验证结果
message(STATUS "过期日期: ${EXPIRY_DATE}")

如果需要Unix时间戳(整数格式),把命令改成:

execute_process(
    COMMAND date -d "+2 months" +"%s"
    OUTPUT_VARIABLE EXPIRY_TIMESTAMP
    OUTPUT_STRIP_TRAILING_WHITESPACE
)
message(STATUS "过期时间戳: ${EXPIRY_TIMESTAMP}")

Windows系统

用PowerShell的日期计算能力实现,同样通过execute_process调用:

# 获取两个月后的日期
execute_process(
    COMMAND powershell -Command "(Get-Date).AddMonths(2).ToString('yyyy-MM-dd')"
    OUTPUT_VARIABLE EXPIRY_DATE
    OUTPUT_STRIP_TRAILING_WHITESPACE
)

message(STATUS "过期日期: ${EXPIRY_DATE}")

如果需要Unix时间戳:

execute_process(
    COMMAND powershell -Command "[math]::Floor((Get-Date).AddMonths(2).ToUniversalTime() - (Get-Date '1970-01-01').ToUniversalTime() | Select-Object -ExpandProperty TotalSeconds)"
    OUTPUT_VARIABLE EXPIRY_TIMESTAMP
    OUTPUT_STRIP_TRAILING_WHITESPACE
)
message(STATUS "过期时间戳: ${EXPIRY_TIMESTAMP}")

跨平台兼容写法

通过CMAKE_HOST_SYSTEM_NAME判断当前系统,自动选择对应的命令:

if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Windows")
    # Windows下获取日期
    execute_process(
        COMMAND powershell -Command "(Get-Date).AddMonths(2).ToString('yyyy-MM-dd')"
        OUTPUT_VARIABLE EXPIRY_DATE
        OUTPUT_STRIP_TRAILING_WHITESPACE
    )
else()
    # Unix-like系统下获取日期
    execute_process(
        COMMAND date -d "+2 months" +"%Y-%m-%d"
        OUTPUT_VARIABLE EXPIRY_DATE
        OUTPUT_STRIP_TRAILING_WHITESPACE
    )
endif()

# 可以把变量写入头文件供代码使用
configure_file(
    ${CMAKE_SOURCE_DIR}/config.h.in
    ${CMAKE_BINARY_DIR}/config.h
    @ONLY
)

注:日期格式可以根据需求自由调整,比如%Y%m%d(无分隔符的年月日)、%Y-%m-%d %H:%M:%S(带时分秒的完整时间)等。

内容的提问来源于stack exchange,提问作者Asker

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 12:00:21