我目前正在尝试使用两个可执行文件设置一个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
很简单,我可以使用其他语言。但是,我仍然对如何实现这一点感到好奇(对于更复杂的设置)。
答案 0 :(得分:2)
来自文档:
请注意, MAIN_DEPENDENCY 是完全可选的,可用作visual studio关于挂起自定义命令的位置的建议。
也许这可以解决你的问题:
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
之后添加一个post build事件。并添加lua2c
作为darpem
的依赖项。