如何在cmake生成器表达式中使用条件
我想基于其他变量将库编译为共享库或静态库,例如:如何在cmake生成器表达式中使用条件,cmake,Cmake,我想基于其他变量将库编译为共享库或静态库,例如: add_library(MyLibrary $<$<IF:${BUILD_SHARED_LIBS},SHARED,STATIC> ${SOURCES}) 好吧,你不能用(没有办法根据doc查询那个方面),因为存在就是为了这个原因;允许您在配置期间选择其值(使用-D命令行选项)。只有当您没有像在代码中那样显式地设置库类型时,这才有效,但如下所示 add_library(MyLibrary ${SOURCES}) 事实上,这是建
add_library(MyLibrary $<$<IF:${BUILD_SHARED_LIBS},SHARED,STATIC> ${SOURCES})
好吧,你不能用(没有办法根据doc查询那个方面),因为存在就是为了这个原因;允许您在配置期间选择其值(使用
-D
命令行选项)。只有当您没有像在代码中那样显式地设置库类型时,这才有效,但如下所示
add_library(MyLibrary ${SOURCES})
事实上,这是建议的做法。如果需要与其他条件相关联地影响其值,可以使用通常的If()/else()
逻辑覆盖它,确保至少为用户打印一条信息性消息()
然而,更好的方法是将这些决定推送到用户(通过)并检查非法组合,发出消息(致命错误)
。即使这种情况是自动确定的,这仍然是一种有价值的策略
add_library(MyLibrary ${SOURCES})