cmake add_custom_target不允许if语句?

时间:2013-05-03 17:41:37

标签: cmake

可以在add_custom_target的一个命令中使用if语句吗?我想出了

add_custom_target(target                 
             if(linux)
               message("Linux!")
             endif()
)

但它失败了:

/bin/sh: 1: Syntax error: word unexpected (expecting "then")

当我在then的末尾添加if(linux)时,它会失败:

/bin/sh: 1: Syntax error: word unexpected (expecting ")")

为什么这不起作用?是不是可以在add_custom_target中进行测试?我的目的是根据操作系统在add_custom_target中执行不同的操作。我还考虑过定义一个在add_custom_target中调用的函数,但这也不起作用。该appproach不允许我写一个简单的make,这也是有问题的。

2 个答案:

答案 0 :(得分:2)

您应该使用ADD_CUSTOM_TARGET以外的if语句:

if(linux)
    add_custom_target(target message("Linux!"))
elseif(win32)
    add_custom_target(target message("Windows!"))
endif()

答案 1 :(得分:2)

我通过将代码移动到cmake脚本并通过cmake的脚本处理模式在add_custom_target中调用此脚本来解决我的问题:cmake -P