cmake替换自定义目标中的字符串

时间:2017-11-14 16:04:27

标签: cmake

我想要一个更新特定文件的cmake目标。 我试过跟随,但似乎我不能将我想要的所有东西都放到自定义目标中。

ADD_CUSTOM_TARGET(update
            file(READ "file.h" myFile)
            string(REPLACE "originalString" "newString" myFile"${myFile}"))
            )

我对cmake很新,所以我可能会遗漏一些基本的东西。我如何根据要求更新文件?

1 个答案:

答案 0 :(得分:1)

我个人用于此类问题的方法是使用configure_file。基本上,您可以制作您认为是模板文件的内容并在文件中包装变量名称。

Example.h.template
Here is my @VAR@

然后,如果您在CMake项目中定义了VAR,它将替换目的地中的VAR。

configure_file(<input> <output> NEWLINE_STYLE WIN32)

如果输入(您的模板)被修改,将重新运行CMake以使您的文件保持最新。所以在你的cmake中你可以

set(VAR "program")
configure_file("Path/To/Example.h.template" "Path/To/File.h" NEWLINE_STYLE [UNIX|DOS|WIN32|LF|CRLF])

结果应为:

File.h
Here is my program