从 的文档来看configure_file,它有一个有用的@ONLY参数,用于:
将变量替换限制为表单的引用
@VAR@。这对于配置使用${VAR}语法的脚本很有用。
到现在为止还挺好。
现在我的情况是我有一个包含@FOO@和的文件,${BAR}我想S{BAR}用一个来自我的CMakeLists.tx. 另一方面,我不希望它configure_file试图替换@FOO@.
换句话说,我需要一个类似$ONLY参数的东西,@ONLY但它适用于相反的情况。
我现在有什么机会可以做到这一点吗?
我试图把反斜线在我的面前@,但这样一来我得到一个包含几个文件\@,这不正是我需要的。
至少我找到了一个有效的解决方案,即使我不确定这是最好的方法。
我将其作为未来读者的答案,以防没有解决方案出现。
假设要详细说明的行如下所示:
@DontTouchMe@/${PROJECT_NAME}
Run Code Online (Sandbox Code Playgroud)
为了能够@DontTouchMe@在将文件传递到 时跳过该部分configure_file,您可以更改该行,如下所示:
@@Workaround@DontTouchMe@Workaround@@/${PROJECT_NAME}
Run Code Online (Sandbox Code Playgroud)
configure_file将匹配并替换@Workaround@为空字符串的部分,并忘记其他@部分,以便在替换后获得以下行:
@DontTouchMe@/TheNameOfTheProject
Run Code Online (Sandbox Code Playgroud)
相当肮脏,它可能会在未来的版本中爆发,cmake因为它实际上利用了该工具的一个错误(嗯,我不确定我实际上可以这样称呼它)。
不管怎样,对于那些仍在寻找可能解决方案的人来说,它是有效的,并且可以成为一种可行的方法。
| 归档时间: |
|
| 查看次数: |
873 次 |
| 最近记录: |