【问题标题】:Why set STRINGS property for a CACHE variable?为什么要为 CACHE 变量设置 STRINGS 属性?
【发布时间】:2021-10-19 09:34:10
【问题描述】:

嗯,我一直很难理解 cmake 文档,但关于 set_property 我无法理解,尤其是在这个示例中,取自 Openpose 的 CMakeLists。

# Select the DL Framework
set(DL_FRAMEWORK CAFFE CACHE STRING "Select Deep Learning Framework.")
if (WIN32)
  set_property(CACHE DL_FRAMEWORK PROPERTY STRINGS CAFFE)
else (WIN32)
  set_property(CACHE DL_FRAMEWORK PROPERTY STRINGS CAFFE NV_CAFFE)
  # set_property(CACHE DL_FRAMEWORK PROPERTY STRINGS CAFFE NV_CAFFE PYTORCH TENSORFLOW)
endif (WIN32)

# Suboptions for Caffe DL Framework
include(CMakeDependentOption)
if (${DL_FRAMEWORK} MATCHES "CAFFE" OR ${DL_FRAMEWORK} MATCHES "NV_CAFFE")
  CMAKE_DEPENDENT_OPTION(BUILD_CAFFE "Build Caffe as part of OpenPose." ON
    "DL_FRAMEWORK" ON)
  # OpenPose flags
  add_definitions(-DUSE_CAFFE)
  # Nvidia NVCaffe
  if (${DL_FRAMEWORK} MATCHES "NV_CAFFE")
      MESSAGE(STATUS "Using NVIDIA NVCaffe")
      add_definitions(-DNV_CAFFE)
  endif (${DL_FRAMEWORK} MATCHES "NV_CAFFE")
endif (${DL_FRAMEWORK} MATCHES "CAFFE" OR ${DL_FRAMEWORK} MATCHES "NV_CAFFE")

我确实了解 CACHE 变量,但是这两个 set_property 的作用是什么,因为变量 ${DL_FRAMEWORK} 似乎被检查为纯文本,如“CAFFE”或“NV_CAFFE”。

这是完整的 CMakeLists.txt: https://github.com/CMU-Perceptual-Computing-Lab/openpose/blob/master/CMakeLists.txt

我也可能误解了属性是如何工作的。

感谢您的宝贵时间!

【问题讨论】:

    标签: cmake properties cmakelists-options


    【解决方案1】:

    命令

      set_property(CACHE DL_FRAMEWORK PROPERTY STRINGS CAFFE NV_CAFFE)
    

    为 CACHE 变量 DL_FRAMEWORK 设置 STRINGS 属性。

    如果使用 CMake GUI 配置项目,则通常在不设置任何变量的情况下执行第一次配置。

    在第一个配置之后,您可能希望设置(更改)变量DL_FRAMEWORKSTRING 提供了一个建议值列表。所以不需要输入例如“NV_CAFFE”,但可以从列表中选择它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-12
      • 2010-11-10
      相关资源
      最近更新 更多