从configure_file
的{{3}}起,它有一个有用的@ONLY
参数用于:
将变量替换限制为
@VAR@
形式的引用。这对于配置使用${VAR}
语法的脚本非常有用。
到目前为止一切顺利。
现在我的情况是,我的文件同时包含@FOO@
和${BAR}
,并且我希望将S{BAR}
替换为来自的变量CMakeLists.tx
我的configure_file
。另一方面,我不希望@FOO@
尝试替换$ONLY
换句话说,我需要类似于@ONLY
参数的内容,其作用为@
,但对于相反的情况。
我现在有什么机会可以做到这一点吗?
我尝试在我的\@
前面添加反斜杠,但这样我获得了一个包含几个public class YourResponse {
@SerializedName("status")
public String status;
@SerializedName("source")
public String source;
@SerializedName("sortBy")
public String sortBy;
@SerializedName("articles")
public List<Articles> articles;
public static class Articles {
@SerializedName("author")
public String author;
@SerializedName("title")
public String title;
@SerializedName("description")
public String description;
@SerializedName("url")
public String url;
@SerializedName("urlToImage")
public String urlToImage;
@SerializedName("publishedAt")
public String publishedAt;
}
}
的文件,这不是我需要的。
答案 0 :(得分:3)
至少我找到了一个有效的解决方案,即使我不确定这是最好的方法 如果没有解决方案,我会把它作为未来读者的答案。
假设要详细说明的行如下所示:
@DontTouchMe@/${PROJECT_NAME}
为了能够在将文件传递给@DontTouchMe@
时跳过configure_file
部分,您可以按照以下方式更改行:
@@Workaround@DontTouchMe@Workaround@@/${PROJECT_NAME}
configure_file
将使用空字符串匹配并替换@Workaround@
个部分,并忘记其他@
左右,以便在替换后获得以下行:
@DontTouchMe@/TheNameOfTheProject
相当脏,它可能会在cmake
的未来版本中爆发,因为它实际上利用了 bug (嗯,我不确定我可以这样称呼它)工具。
无论如何,它仍然有效,对那些仍在寻找可能解决方案的人来说是一种可行的方法。