cmake中添加引用动态链接_CMake:动态地向add_custom_command添加依赖项

博客介绍了在CMake中使用add_custom_target添加自定义目标及依赖关系的方法。指出可通过add_custom_target与正确依赖定义避免每次构建,还说明了cmake对依赖项的工作原理,如add_dependencies只能添加add_custom_target创建的目标,add_custom_target可依赖add_custom_command的输出等。

您可以将add_custom_target与正确的依赖关系定义一起使用,而不是使用add_custom_command(因此不会每次都构建它).

add_custom_target(project

COMMAND touch project.txt)

add_custom_target(project2

COMMAND touch project2.txt)

add_custom_target(combination

COMMAND cat project.txt project2.txt > combination.txt)

add_dependencies(combination project2)

add_dependencies(combination project)

add_executable(t t.c)

add_dependencies(t combination.txt)

再次:确保您使用add_custom_target的DEPENDS参数创建一个真正的依赖关系链,以便项目目标和组合目标变得过时.

更新:我太早了.事实上,cmake(至少高达2.8.9)对依赖项的工作原理如下:通过调用add_dependencies,您无法添加依赖项,该依赖项是自定义命令IOW(生成)文件的OUTPUT.使用add_dependencies,您只能添加add_custom_target创建的目标.但是在add_custom_target中,您可以使用DEPENDS-directive依赖于add_custom_command的输出.这说它使它工作:

add_custom_command(OUTPUT project.txt

COMMAND uptime >> project.txt MAIN_DEPENDENCY t2.c)

add_custom_target(project DEPENDS project.txt)

add_custom_target(combination

COMMAND cat project.txt project2.txt > combination.txt)

add_dependencies(combination project)

这将使组合目标始终重新生成,因为它没有MAIN_DEPENDENCY或DEPENDS,但允许使用add_dependencies.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值