嗯,我总是在理解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
我可能还误解了属性是如何工作的。
耽误您时间,实在对不起!
发布于 2021-08-17 10:10:11
该命令
set_property(CACHE DL_FRAMEWORK PROPERTY STRINGS CAFFE NV_CAFFE)
设置缓存变量DL_FRAMEWORK
的STRINGS属性。
如果使用CMake图形用户界面配置项目,那么第一次配置通常不需要对变量进行任何设置。
在第一次配置之后,人们可能希望设置(更改)变量DL_FRAMEWORK
。STRING
提供了一个建议的值列表。这样就不需要打字了。"NV_CAFFE“,但可以从列表中选择它。
https://stackoverflow.com/questions/68817969
复制