添加一个文件名作为目标的自定义命令
我想做一些类似add_custom_command
事情,输出文件名称作为生成的makefile中的目标。 有没有这样做的优雅方式?
我见过的所有示例(例如cmake faq re:latex)都使用add_custom_command
来告诉如何生成所需的输出文件,然后使用add_custom_target
来创建目标。 例如:
add_executable (hello hello.c)
add_custom_command(OUTPUT hello.bin
COMMAND objcopy --output-format=binary hello hello.bin
DEPENDS hello
COMMENT "objcopying hello to hello.bin")
add_custom_target(bin ALL DEPENDS hello.bin)
但是,生成的makefile中的目标名称是bin
而不是hello.bin
。 有没有办法让hello.bin
本身成为生成的makefile中的目标?
我试过的一些解决方案不起作用:
add_custom_target(hello.bin ALL DEPENDS hello.bin)
会在makefile中产生循环依赖。 你可以通过生成hello.bin作为目标的副作用来实现。 不是从objcopy生成hello.bin,而是生成hello.tmp。 那么作为一个副作用,你也可以将hello.tmp复制到hello.bin。 最后,你根据你的hello.tmp创建假目标hello.bin。 在代码中:
add_executable (hello hello.c)
add_custom_command(OUTPUT hello.tmp
COMMAND objcopy --output-format=binary hello hello.tmp
COMMAND ${CMAKE_COMMAND} -E copy hello.tmp hello.bin
DEPENDS hello
COMMENT "objcopying hello to hello.bin")
add_custom_target(hello.bin ALL DEPENDS hello.tmp)
这个问题是,当你运行clean时,hello.bin不会被清理。 要做到这一点,请添加:
set_directory_properties(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES hello.bin)
链接地址: http://www.djcxy.com/p/5471.html
上一篇: adding a custom command with the file name as a target
下一篇: Implement probability distribution function in Java problem