我目前正在尝试用两个可执行文件建立一个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)
使用此设置,target
lua2c
结束时没有依赖项,这会导致cc
抱怨没有输入文件。如果我删除add_custom_command
行,那么lua2c
将正确构建,但显然不会生成文件lcode.c
。这在芝加哥有可能吗?我需要添加排序的子目录依赖项吗?在Ubuntu 13.04,x86-64上使用CMake 2.8.1版本。
注意:对于我的特殊情况,因为
lua2c
足够简单,所以我可以使用不同的语言。然而,我仍然很好奇这是怎么可能的(对于更复杂的设置)。 最佳答案
从文档中:
请注意,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
之后添加一个生成后事件。它添加lua2c
作为darpem
的依赖项。