2017-07-26 33 views
3

如从的configure_filedocumentation,它具有用于将有用@ONLY参数:

限制变量代换的形式@[email protected]的引用。这对于配置使用${VAR}语法的脚本很有用。

到目前为止好。

现在,我在那里我已经同时包含@[email protected]${BAR}文件的情况下,我想与来自我CMakeLists.tx一个变量来代替S{BAR}。另一方面,我不希望configure_file试图替换@[email protected]
换句话说,我需要像$ONLY参数那样的作为@ONLY,但是相反的情况。

我现在有什么机会可以做到这一点吗?
我试着在我的@前面加反斜杠,但是这样我得到一个包含几个\@的文件,这并不是我所需要的。

回答

3

至少我发现了一个可行的解决方案,即使我不确定这是否是最好的方法。
如果没有解决方案,我将它留作未来读者的答案。

假设线有待于推敲看起来像这样:

@[email protected]/${PROJECT_NAME} 

为了能够当你的文件传递给configure_file跳过@[email protected]部分,您可以更改行,因为它遵循:

@@[email protected]@[email protected]@/${PROJECT_NAME} 

configure_file将匹配并用空字符串替换@[email protected]部分,并忘记其他@左右,以便您在替换后获得以下行:

@[email protected]/TheNameOfTheProject 

很肮脏,它可以打破与cmake未来的版本中它实际上是利用了错误(呃,我不知道我可以这样调用它实际上)的工具。
无论如何,它的工作原理,可以为那些仍在寻找可能的解决方案的人提供可行的方法。

相关问题