gpt4 book ai didi

c - 来自另一个目标的 add_custom_command

转载 作者:太空宇宙 更新时间:2023-11-04 02:55:38 24 4
gpt4 key购买 nike

我目前正在尝试使用两个可执行文件设置一个 CMake 项目,其中一个是用于为另一个生成代码的简单实用程序。 CMakeLists.txt 的相关位:

add_executable(lua2c lua2c.c)
add_custom_command(OUTPUT lcode.c COMMAND lua2c lcode.lua lcode.c MAIN_DEPENDENCY lua2c)
...
add_executable(darpem ... lcode.c)

使用此设置,目标 lua2c 最终没有任何依赖项,这导致 cc 提示没有输入文件。如果我删除 add_custom_command 行,则可以正确构建 lua2c,但显然不会生成文件 lcode.c。这在 CMake 中可能吗?我是否需要添加某种子目录依赖项?

在 Ubuntu 13.04、x86-64 上使用 CMake 版本 2.8.1。

注意:对于我的特殊情况,因为 lua2c 足够简单,我可以使用不同的语言。然而,我仍然很好奇这怎么可能(对于更复杂的设置)。

最佳答案

来自文档:

Note that MAIN_DEPENDENCY is completely optional and is used as a suggestion to visual studio about where to hang the custom command.

也许这应该可以解决您的问题:

add_executable(lua2c lua2c.c)
add_custom_command(OUTPUT lcode.c COMMAND lua2c lcode.lua lcode.c DEPENDS lua2c)
# ^^^^^^^
...
add_executable(darpem ... lcode.c)

或者如果它不起作用,这个应该可以:

add_executable(lua2c lua2c.c)
add_custom_command(TARGET lua2c
POST_BUILD
COMMAND lua2c lcode.lua lcode.c )

...
add_executable(darpem ... lcode.c)
add_dependencies( darpem lua2c )

它只是在构建 lua2c 之后添加一个构建后事件。并将 lua2c 添加为 darpem 的依赖项。

关于c - 来自另一个目标的 add_custom_command,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17820927/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com