CMake 是否有来自 Make 的 % 替换支持?

发布于 2024-09-10 21:54:12 字数 450 浏览 4 评论 0原文

我的构建过程中需要一系列文件处理。可以轻松地围绕文件名指定和构建工作流程,只需更改扩展名,例如 file.a ->文件.b ->文件.c。因此,这显然是 Make 声明性语法的一个例子。但正如我所见,对于 CMake 来说,这看起来像是针对每个处理步骤的每个文件的显式 add_custom_command

因此,问题是 CMake 是否支持像 Make 中的 % 之类的替换,以便只需要每个处理步骤的一般规则。

我想象这样的:

add_custom_command(OUTPUT %.b
    COMMAND convert %.a > %.b
    DEPENDS %.a)

add_custom_command(OUTPUT %.c
    COMMAND convert %.b > %.c
    DEPENDS %.b)

I need a chain of file processing in my build-process. Workflow can be easily specified and built around a filename, only extension changes, like file.a -> file.b -> file.c. So, it's clearly a case for Make's declarative syntax. But as I see, for CMake this will look like an explicit add_custom_command for each file for each step of processing.

So, the question is if CMake supports substitutions like % from Make, so that only general rules for each step of processing would be required.

I imagine this like:

add_custom_command(OUTPUT %.b
    COMMAND convert %.a > %.b
    DEPENDS %.a)

add_custom_command(OUTPUT %.c
    COMMAND convert %.b > %.c
    DEPENDS %.b)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

鼻尖触碰 2024-09-17 21:54:12

不,CMake 不支持任何模式。人们通常使用宏作为解决方法。

人们不使用 CMake 是因为其优雅的语法及其表现力。

No, CMake does not have any support for patterns. People typically use macros as a workaround.

People don't use CMake because of the elegant syntax and its expressiveness.

哥,最终变帅啦 2024-09-17 21:54:12

你可以使用宏。

一个简单的例子:

MACRO( TEST )
MESSAGE ( "HELLO ${ARGV}" )
ENDMACRO( TEST )

TEST("WORLD")

You could use macros.

A simple example:

MACRO( TEST )
MESSAGE ( "HELLO ${ARGV}" )
ENDMACRO( TEST )

TEST("WORLD")
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文