Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在cmake生成器表达式中使用条件_Cmake - Fatal编程技术网

如何在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})