首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CMake:“SET(PODOFO_BUILD_SHARED而不是${PODOFO_BUILD_SHARED})”是什么意思?

CMake:“SET(PODOFO_BUILD_SHARED而不是${PODOFO_BUILD_SHARED})”是什么意思?
EN

Stack Overflow用户
提问于 2013-11-07 10:13:50
回答 1查看 143关注 0票数 1
代码语言:javascript
复制
# If the user hasn't told use specifically what they want, build only
# a static library.

IF(NOT DEFINED PODOFO_BUILD_SHARED AND NOT DEFINED PODOFO_BUILD_STATIC)
   SET(PODOFO_BUILD_STATIC TRUE)
   SET(PODOFO_BUILD_SHARED FALSE)
ENDIF(NOT DEFINED PODOFO_BUILD_SHARED AND NOT DEFINED PODOFO_BUILD_STATIC)

IF(DEFINED PODOFO_BUILD_SHARED AND NOT DEFINED PODOFO_BUILD_STATIC)
    SET(PODOFO_BUILD_SHARED NOT ${PODOFO_BUILD_SHARED})
ENDIF(DEFINED PODOFO_BUILD_SHARED AND NOT DEFINED PODOFO_BUILD_STATIC)

IF(NOT DEFINED PODOFO_BUILD_SHARED AND DEFINED PODOFO_BUILD_STATIC)
    SET(PODOFO_BUILD_SHARED NOT ${PODOFO_BUILD_STATIC})
ENDIF(NOT DEFINED PODOFO_BUILD_SHARED AND DEFINED PODOFO_BUILD_STATIC)

"SET(PODOFO_BUILD_SHARED而不是${PODOFO_BUILD_SHARED})“是什么意思?在这些片段之前,我看不到PODOFO_BUILD_SHARED变量的任何定义

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-11-07 12:11:08

  • 前4行采用两个“布尔”变量PODOFO_BUILD_STATIC和PODOFO_BUILD_SHARED,如果它们都未定义,则将它们设置为默认值。
  • 第二,如果只定义了PODOFO_BUILD_SHARED,那么第三行将反转PODOFO_BUILD_SHARED的值,不管它的初始值是什么。
  • 最后3行取PODOFO_BUILD_STATIC的倒置值,如果只定义PODOFO_BUILD_STATIC,则将其赋值给PODOFO_BUILD_STATIC。

然而,总体上看,这种行为似乎有点奇怪。我猜这(后三行):

代码语言:javascript
复制
IF(DEFINED PODOFO_BUILD_SHARED AND NOT DEFINED PODOFO_BUILD_STATIC)
    SET(PODOFO_BUILD_SHARED NOT ${PODOFO_BUILD_SHARED})
ENDIF(DEFINED PODOFO_BUILD_SHARED AND NOT DEFINED PODOFO_BUILD_STATIC)

应:

代码语言:javascript
复制
IF(DEFINED PODOFO_BUILD_SHARED AND NOT DEFINED PODOFO_BUILD_STATIC)
    SET(PODOFO_BUILD_STATIC NOT ${PODOFO_BUILD_SHARED})
ENDIF(DEFINED PODOFO_BUILD_SHARED AND NOT DEFINED PODOFO_BUILD_STATIC)

这样做更有意义:如果只定义了两个变量中的一个,则将另一个设置为相反的值。

"SET(PODOFO_BUILD_SHARED而不是${PODOFO_BUILD_SHARED})“是什么意思?在这些片段之前,我看不到PODOFO_BUILD_SHARED变量的任何定义

该变量可以通过几种方式预先在文件外部定义(例如从命令行定义,或者通过cmake-gui设置缓存变量)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19833211

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档