cmake04-熟悉set_target_properties和get_target_property

782 阅读1分钟

一、概念

set_target_properties(target PROPERTIES property_name property_value) 向某target设置关联属性 get_target_property(变量A target 属性key) 向某target获取key对应的值然后赋值给变量A

二、具体cmake配置

cmake_minimum_required ( VERSION 3.17 )

project ( target_test )

add_executable( target_test main.cpp )

set_target_properties ( target_test PROPERTIES AAA 123 )
set_target_properties ( target_test PROPERTIES BBB 456 )

get_target_property ( VAR1 target_test AAA )
get_target_property ( VAR2 target_test BBB )

message ( STATUS "VAR1 = ${VAR1}" )
message ( STATUS "VAR2 = ${VAR2}" )

set ( t_name )
set ( t_value )
list ( APPEND t_name XXX )
list ( APPEND t_value 1  )
list ( APPEND t_name YYY )
list ( APPEND t_value 2  )
message ( STATUS "t_name = ${t_name}" )
message ( STATUS "t_value = ${t_value}" )

list ( LENGTH t_name len )
math ( EXPR my_len "${len} - 1")
message ( STATUS "len = ${len}" )
 
foreach ( val RANGE ${my_len} )
  list ( GET t_name  ${val} val1 )
  list ( GET t_value ${val} val2 )
  message ( STATUS "${val1}  ${val2}" )
endforeach ()

foreach ( val RANGE ${my_len} )
  list ( GET t_name  ${val} val1 )
  list ( GET t_value ${val} val2 )
  #message ( STATUS "${val1}  ${val2}" )
  set_target_properties ( target_test PROPERTIES ${val1} ${val2} )
endforeach ()

get_target_property ( MY_VAR1 target_test XXX )
get_target_property ( MY_VAR2 target_test YYY )

message ( STATUS "MY_VAR1 = ${MY_VAR1}" )
message ( STATUS "MY_VAR2 = ${MY_VAR2}" )