这可能是非常基础的,但它快把我逼疯了。假设我有一个将源代码转换为对象的编译器:
compiler source object
我想添加cmake规则,以便仅当source
发生更改时才调用此规则。我尝试过的所有排列要么从未调用过它,要么总是调用它。
我将暂时把那些没有作用的东西放在一边。这将始终调用它,无论source
是否已更改:
add_custom_command(OUTPUT object
COMMAND compiler source object
DEPENDS source)
add_custom_target(my_target ALL DEPENDS object)
我知道add_custom_target
会生成一个总是过期的目标,所以总是会构建my_target
。但是,当它链接到另一个规则时,它从不考虑source
是否过期;它总是构建。我希望DEPENDS
子句能做正确的事情。
我误解了什么?我使用的是旧版本(2.6);会不会有个bug?
发布于 2014-08-05 01:20:15
我想我想通了。这是我的编译器的一个怪癖,它希望总是将object
放在source
所在的同一目录中。上面的示例对于源代码内的构建工作得很好,但是对于源代码外的构建,它在错误的位置寻找object
,并且它永远不会在那里。我认为,让编译器显式地把object
放在某个地方就可以解决这个问题。
https://stackoverflow.com/questions/25127743
复制