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

CMake规则正则表达式错误:无法排除绝对路径/lib64

解决CMake中POST_EXCLUDE_REGEXES排除/lib64路径的正则问题

要从运行时依赖列表中仅排除绝对路径/lib64,尝试用正则表达式实现时遇到CMake适配问题:在线校验工具中有效的正则,在CMake里无法正常工作。

使用的代码如下:

install(CODE [[
      file(GET_RUNTIME_DEPENDENCIES
        EXECUTABLES $<TARGET_FILE:myApp1> $<TARGET_FILE:myApp2> $<TARGET_FILE:myApp3>
        RESOLVED_DEPENDENCIES_VAR RESOLVED_DEPS
        UNRESOLVED_DEPENDENCIES_VAR UNRESOLVED_DEPS
        CONFLICTING_DEPENDENCIES_PREFIX CONFLICTING_DEPENDENCIES
        POST_EXCLUDE_REGEXES "^(\/lib64)$"
      )
...
]]

运行时出现警告:

when parsing string

^(/lib64)$

Invalid escape sequence /

若将正则改为"^(/lib64)$",则无法成功排除该路径。


解决方案

  • 移除不必要的转义符
    在POSIX正则表达式中,/不属于特殊字符,不需要用反斜杠转义。CMake的字符串解析会将\/中的\视为无效转义序列,因此直接使用无转义的正则即可:

    POST_EXCLUDE_REGEXES "^/lib64$"
    

    这个正则会精确匹配整个字符串为/lib64的依赖项,实现仅排除该绝对路径的需求。

  • 适配带末尾斜杠的情况(可选)
    如果部分依赖项路径以/lib64/结尾,可调整正则同时匹配两种情况:

    POST_EXCLUDE_REGEXES "^/lib64/?$"
    

    其中/?表示匹配0个或1个末尾斜杠,覆盖两种路径格式。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 16:55:46