diff --git a/UltiSnips/cmake.snippets b/UltiSnips/cmake.snippets
index bf231c2..f280357 100644
--- a/UltiSnips/cmake.snippets
+++ b/UltiSnips/cmake.snippets
@@ -256,7 +256,29 @@ find_file(${1:variable}
 	$22`!p snip.rv=complete(t[22], ['CMAKE_FIND_ROOT_PATH_BOTH', 'ONLY_CMAKE_FIND_ROOT_PATH', 'NO_CMAKE_FIND_ROOT_PATH'])`}})
 endsnippet
 
-# TODO: find_package
+snippet find_package "simple"
+find_package(${1:package}${2: version}${3: EXACT}${4: QUIET}${5: MODULE}${6: REQUIRED}${7: COMPONENTS ${8:components}}${9: OPTIONAL_COMPONENTS ${10:components}}${11: NO_POLICY_SCOPE})
+endsnippet
+snippet find_package "config"
+find_package(${1:package} ${2:version}${3: EXACT}${4: QUIET}${5: REQUIRED}${6:
+	COMPONENTS ${7:components}}${8:
+	$9`!p snip.rv=complete(t[9], ['CONFIG', 'NO_MODULE'])`}${10:
+	NO_POLICY_SCOPE}${11:
+	NAMES ${12:names}}${13:
+	CONFIGS ${14:configs}}${15:
+	HINTS ${16:paths}}${17:
+	PATHS ${18:paths}}${19:
+	PATH_SUFFIXES ${20:suffixs}}${21:${22:
+	NO_DEFAULT_PATH}${23:
+	NO_CMAKE_ENVIRONMENT_PATH}${24:
+	NO_CMAKE_PATH}${25:
+	NO_SYSTEM_ENVIRONMENT_PATH}${26:
+	NO_CMAKE_PACKAGE_REGISTRY}${27:
+	NO_CMAKE_BUILDS_PATH}${28:
+	NO_CMAKE_SYSTEM_PATH}${29:
+	NO_CMAKE_SYSTEM_PACKAGE_REGISTRY}}${30:
+	$31`!p snip.rv=complete(t[31], ['CMAKE_FIND_ROOT_PATH_BOTH', 'ONLY_CMAKE_FIND_ROOT_PATH', 'NO_CMAKE_FIND_ROOT_PATH'])`})
+endsnippet
 
 snippet find_path "shorthand"
 find_path(${1:variable} ${1:names})
@@ -311,35 +333,156 @@ function(${1:name} ${2:arguments})
 endfunction()
 endsnippet
 
-# TODO: get_cmake_property()
-# TODO: get_directory_property()
-# TODO: get_filename_property()
+snippet get_cmake_property
+get_cmake_property(${1:variable} $2`!p snip.rv=complete(t[2], ['VARIABLES', 'CACHE_VARIABLES', 'COMMANDS', 'MACROS', 'COMPONENTS'])`)
+endsnippet
+
+global !p
+DIRECTORY_PROPERTIES=[
+'ADDITIONAL_MAKE_CLEAN_FILES', 'CACHE_VARIABLES', 'CLEAN_NO_CUSTOM',
+'CMAKE_CONFIGURE_DEPENDS', 'COMPILE_DEFINITIONS_<CONFIG>',
+'COMPILE_DEFINITIONS', 'COMPILE_OPTIONS', 'DEFINITIONS', 'EXCLUDE_FROM_ALL',
+'IMPLICIT_DEPENDS_INCLUDE_TRANSFORM', 'INCLUDE_DIRECTORIES',
+'INCLUDE_REGULAR_EXPRESSION', 'INTERPROCEDURAL_OPTIMIZATION_<CONFIG>',
+'INTERPROCEDURAL_OPTIMIZATION', 'LINK_DIRECTORIES', 'LISTFILE_STACK',
+'MACROS', 'PARENT_DIRECTORY', 'RULE_LAUNCH_COMPILE', 'RULE_LAUNCH_CUSTOM',
+'RULE_LAUNCH_LINK', 'TEST_INCLUDE_FILE', 'VARIABLES',
+'VS_GLOBAL_SECTION_POST_<section>', 'VS_GLOBAL_SECTION_PRE_<section>',
+]
+endglobal
+snippet get_directory_property "property"
+get_directory_property(${1:variable}${2: DIRECTORY ${3:directory}} $4`!p snip.rv=complete(t[4], DIRECTORY_PROPERTIES)`)
+endsnippet
+snippet get_directory_property "definition"
+get_directory_property(${1:variable}${2: DIRECTORY ${3:directory}} DEFINITION ${4:name})
+endsnippet
+
+snippet get_filename_component "full"
+get_filename_component(${1:variable} ${2:filename} $3`!p snip.rv=complete(t[3], ['DIRECTORY', 'NAME', 'EXT', 'NAME_WE', 'ABSOLUTE', 'REALPATH', 'PATH'])`${4: ${5:CACHE}})
+endsnippet
+snippet get_filename_component "system"
+get_filename_component(${1:variable} ${2:filename} PROGRAM${3: PROGRAM_ARGS ${4:{arguments}}}${5: CACHE})
+endsnippet
 
 global !p
 PROPERTY_OPTIONS=['SET', 'DEFINED', 'BRIEF_DOCS', 'FULL_DOCS']
+GLOBAL_PROPERTIES=['ALLOW_DUPLICATE_CUSTOM_TARGETS', 'AUTOGEN_TARGETS_FOLDER',
+'AUTOMOC_TARGETS_FOLDER', 'DEBUG_CONFIGURATIONS', 'DISABLED_FEATURES',
+'ENABLED_FEATURES', 'ENABLED_LANGUAGES', 'FIND_LIBRARY_USE_LIB64_PATHS',
+'FIND_LIBRARY_USE_OPENBSD_VERSIONING', 'GLOBAL_DEPENDS_DEBUG_MODE',
+'GLOBAL_DEPENDS_NO_CYCLES', 'IN_TRY_COMPILE', 'PACKAGES_FOUND',
+'PACKAGES_NOT_FOUND', 'JOB_POOLS', 'PREDEFINED_TARGETS_FOLDER',
+'ECLIPSE_EXTRA_NATURES', 'REPORT_UNDEFINED_PROPERTIES',
+'RULE_LAUNCH_COMPILE', 'RULE_LAUNCH_CUSTOM', 'RULE_LAUNCH_LINK',
+'RULE_MESSAGES', 'TARGET_ARCHIVES_MAY_BE_SHARED_LIBS',
+'TARGET_SUPPORTS_SHARED_LIBS', 'USE_FOLDERS']
 endglobal
 snippet get_property "global"
-get_property(${1:variable} GLOBAL PROPERTY ${2:name} $3`!p snip.rv=complete(t[3], PROPERTY_OPTIONS)`)
+get_property(${1:variable} GLOBAL PROPERTY $2`!p snip.rv=complete(t[2], GLOBAL_PROPERTIES)` $3`!p snip.rv=complete(t[3], PROPERTY_OPTIONS)`)
 endsnippet
 snippet get_property "directory"
-get_property(${1:variable} DIRECTORY ${2:directory} PROPERTY ${3:name} $4`!p snip.rv=complete(t[4], PROPERTY_OPTIONS)`)
+get_property(${1:variable} DIRECTORY ${2:directory} PROPERTY $3`!p snip.rv=complete(t[3], DIRECTORY_PROPERTIES)` $4`!p snip.rv=complete(t[4], PROPERTY_OPTIONS)`)
 endsnippet
 snippet get_property "target"
-get_property(${1:variable} TARGET ${2:target} PROPERTY ${3:name} $4`!p snip.rv=complete(t[4], PROPERTY_OPTIONS)`)
+get_property(${1:variable} TARGET ${2:target} PROPERTY $3`!p snip.rv=complete(t[3], TARGET_PROPERTIES)` $4`!p snip.rv=complete(t[4], PROPERTY_OPTIONS)`)
 endsnippet
 snippet get_property "source"
-get_property(${1:variable} SOURCE ${2:source} PROPERTY ${3:name} $4`!p snip.rv=complete(t[4], PROPERTY_OPTIONS)`)
+get_property(${1:variable} SOURCE ${2:source} PROPERTY $3`!p snip.rv=complete(t[3], SOURCE_FILE_PROPERTIES)` $4`!p snip.rv=complete(t[4], PROPERTY_OPTIONS)`)
 endsnippet
+global !p
+CACHE_PROPERTIES=[ 'ADVANCED', 'HELPSTRING', 'MODIFIED', 'STRINGS', 'TYPE', 'VALUE']
+endglobal
 snippet get_property "cache"
-get_property(${1:variable} CACHE ${2:entry} PROPERTY ${3:name} $4`!p snip.rv=complete(t[4], PROPERTY_OPTIONS)`)
+get_property(${1:variable} CACHE ${2:entry} PROPERTY $3`!p snip.rv=complete(t[3], CACHE_PROPERTIES)` $4`!p snip.rv=complete(t[4], PROPERTY_OPTIONS)`)
 endsnippet
-snippet get_property "cache"
+snippet get_property "variable"
 get_property(${1:variable} VARIABLE PROPERTY ${2:name} $3`!p snip.rv=complete(t[4], PROPERTY_OPTIONS)`)
 endsnippet
 
-# TODO: get_source_file_property()
-# TODO: get_target_property()
-# TODO: get_test_property()
+global !p
+SOURCE_FILE_PROPERTIES=['ABSTRACT', 'AUTOUIC_OPTIONS', 'AUTORCC_OPTIONS',
+'COMPILE_DEFINITIONS_<CONFIG>', 'COMPILE_DEFINITIONS', 'COMPILE_FLAGS',
+'EXTERNAL_OBJECT', 'Fortran_FORMAT', 'GENERATED', 'HEADER_FILE_ONLY',
+'KEEP_EXTENSION', 'LABELS', 'LANGUAGE', 'LOCATION', 'MACOSX_PACKAGE_LOCATION',
+'OBJECT_DEPENDS', 'OBJECT_OUTPUTS', 'SYMBOLIC', 'WRAP_EXCLUDE']
+endglobal
+snippet get_source_file_property
+get_source_file_property(${1:variable} ${2:file} $3`!p snip.rv=complete(t[3], SOURCE_FILE_PROPERTIES)`)
+endsnippet
+
+global !p
+TARGET_PROPERTIES=['ALIASED_TARGET', 'ARCHIVE_OUTPUT_DIRECTORY_<CONFIG>',
+'ARCHIVE_OUTPUT_DIRECTORY', 'ARCHIVE_OUTPUT_NAME_<CONFIG>',
+'ARCHIVE_OUTPUT_NAME', 'AUTOGEN_TARGET_DEPENDS', 'AUTOMOC_MOC_OPTIONS',
+'AUTOMOC', 'AUTOUIC', 'AUTOUIC_OPTIONS', 'AUTORCC', 'AUTORCC_OPTIONS',
+'BUILD_WITH_INSTALL_RPATH', 'BUNDLE_EXTENSION', 'BUNDLE',
+'COMPATIBLE_INTERFACE_BOOL', 'COMPATIBLE_INTERFACE_NUMBER_MAX',
+'COMPATIBLE_INTERFACE_NUMBER_MIN', 'COMPATIBLE_INTERFACE_STRING',
+'COMPILE_DEFINITIONS_<CONFIG>', 'COMPILE_DEFINITIONS', 'COMPILE_FLAGS',
+'COMPILE_OPTIONS', '<CONFIG>_OUTPUT_NAME', '<CONFIG>_POSTFIX', 'DEBUG_POSTFIX',
+'DEFINE_SYMBOL', 'EchoString', 'ENABLE_EXPORTS', 'EXCLUDE_FROM_ALL',
+'EXCLUDE_FROM_DEFAULT_BUILD_<CONFIG>', 'EXCLUDE_FROM_DEFAULT_BUILD',
+'EXPORT_NAME', 'FOLDER', 'Fortran_FORMAT', 'Fortran_MODULE_DIRECTORY',
+'FRAMEWORK', 'GENERATOR_FILE_NAME', 'GNUtoMS', 'HAS_CXX',
+'IMPLICIT_DEPENDS_INCLUDE_TRANSFORM', 'IMPORTED_CONFIGURATIONS',
+'IMPORTED_IMPLIB_<CONFIG>', 'IMPORTED_IMPLIB',
+'IMPORTED_LINK_DEPENDENT_LIBRARIES_<CONFIG>',
+'IMPORTED_LINK_DEPENDENT_LIBRARIES',
+'IMPORTED_LINK_INTERFACE_LANGUAGES_<CONFIG>',
+'IMPORTED_LINK_INTERFACE_LANGUAGES',
+'IMPORTED_LINK_INTERFACE_LIBRARIES_<CONFIG>',
+'IMPORTED_LINK_INTERFACE_LIBRARIES',
+'IMPORTED_LINK_INTERFACE_MULTIPLICITY_<CONFIG>',
+'IMPORTED_LINK_INTERFACE_MULTIPLICITY',
+'IMPORTED_LOCATION_<CONFIG>', 'IMPORTED_LOCATION',
+'IMPORTED_NO_SONAME_<CONFIG>', 'IMPORTED_NO_SONAME', 'IMPORTED',
+'IMPORTED_SONAME_<CONFIG>', 'IMPORTED_SONAME', 'IMPORT_PREFIX',
+'IMPORT_SUFFIX', 'INCLUDE_DIRECTORIES', 'INSTALL_NAME_DIR',
+'INSTALL_RPATH', 'INSTALL_RPATH_USE_LINK_PATH', 'INTERFACE_AUTOUIC_OPTIONS',
+'INTERFACE_COMPILE_DEFINITIONS', 'INTERFACE_COMPILE_OPTIONS',
+'INTERFACE_INCLUDE_DIRECTORIES', 'INTERFACE_LINK_LIBRARIES',
+'INTERFACE_POSITION_INDEPENDENT_CODE', 'INTERFACE_SYSTEM_INCLUDE_DIRECTORIES',
+'INTERPROCEDURAL_OPTIMIZATION_<CONFIG>', 'INTERPROCEDURAL_OPTIMIZATION',
+'JOB_POOL_COMPILE', 'JOB_POOL_LINK', 'LABELS', '<LANG>_VISIBILITY_PRESET',
+'LIBRARY_OUTPUT_DIRECTORY_<CONFIG>', 'LIBRARY_OUTPUT_DIRECTORY',
+'LIBRARY_OUTPUT_NAME_<CONFIG>', 'LIBRARY_OUTPUT_NAME',
+'LINK_DEPENDS_NO_SHARED', 'LINK_DEPENDS', 'LINKER_LANGUAGE',
+'LINK_FLAGS_<CONFIG>', 'LINK_FLAGS', 'LINK_INTERFACE_LIBRARIES_<CONFIG>',
+'LINK_INTERFACE_LIBRARIES', 'LINK_INTERFACE_MULTIPLICITY_<CONFIG>',
+'LINK_INTERFACE_MULTIPLICITY', 'LINK_LIBRARIES', 'LINK_SEARCH_END_STATIC',
+'LINK_SEARCH_START_STATIC', 'LOCATION_<CONFIG>', 'LOCATION',
+'MACOSX_BUNDLE_INFO_PLIST', 'MACOSX_BUNDLE', 'MACOSX_FRAMEWORK_INFO_PLIST',
+'MACOSX_RPATH', 'MAP_IMPORTED_CONFIG_<CONFIG>', 'NAME', 'NO_SONAME',
+'NO_SYSTEM_FROM_IMPORTED', 'OSX_ARCHITECTURES_<CONFIG>', 'OSX_ARCHITECTURES',
+'OUTPUT_NAME_<CONFIG>', 'OUTPUT_NAME', 'PDB_NAME_<CONFIG>', 'PDB_NAME',
+'PDB_OUTPUT_DIRECTORY_<CONFIG>', 'PDB_OUTPUT_DIRECTORY',
+'POSITION_INDEPENDENT_CODE', 'POST_INSTALL_SCRIPT', 'PREFIX',
+'PRE_INSTALL_SCRIPT', 'PRIVATE_HEADER', 'PROJECT_LABEL', 'PUBLIC_HEADER',
+'RESOURCE', 'RULE_LAUNCH_COMPILE', 'RULE_LAUNCH_CUSTOM', 'RULE_LAUNCH_LINK',
+'RUNTIME_OUTPUT_DIRECTORY_<CONFIG>', 'RUNTIME_OUTPUT_DIRECTORY',
+'RUNTIME_OUTPUT_NAME_<CONFIG>', 'RUNTIME_OUTPUT_NAME', 'SKIP_BUILD_RPATH',
+'SOURCES', 'SOVERSION', 'STATIC_LIBRARY_FLAGS_<CONFIG>',
+'STATIC_LIBRARY_FLAGS', 'SUFFIX', 'TYPE', 'VERSION',
+'VISIBILITY_INLINES_HIDDEN', 'VS_DOTNET_REFERENCES',
+'VS_DOTNET_TARGET_FRAMEWORK_VERSION', 'VS_GLOBAL_KEYWORD',
+'VS_GLOBAL_PROJECT_TYPES', 'VS_GLOBAL_ROOTNAMESPACE', 'VS_GLOBAL_<variable>',
+'VS_KEYWORD', 'VS_SCC_AUXPATH', 'VS_SCC_LOCALPATH', 'VS_SCC_PROJECTNAME',
+'VS_SCC_PROVIDER', 'VS_WINRT_EXTENSIONS', 'VS_WINRT_REFERENCES',
+'WIN32_EXECUTABLE', 'XCODE_ATTRIBUTE_<an-attribute>']
+endglobal
+snippet get_target_property
+get_target_property(${1:variable} ${2:target} $3`!p snip.rv=complete(t[3], TARGET_PROPERTIES)`)
+endsnippet
+
+global !p
+TEST_PROPERTIES=['ATTACHED_FILES_ON_FAIL', 'ATTACHED_FILES', 'COST', 'DEPENDS',
+'ENVIRONMENT', 'FAIL_REGULAR_EXPRESSION', 'LABELS', 'MEASUREMENT',
+'PASS_REGULAR_EXPRESSION', 'PROCESSORS', 'REQUIRED_FILES', 'RESOURCE_LOCK',
+'RUN_SERIAL', 'SKIP_RETURN_CODE', 'TIMEOUT', 'WILL_FAIL', 'WORKING_DIRECTORY']
+endglobal
+snippet get_test_property
+get_test_property(${1:test} ${2:property} $3`!p snip.rv=complete(t[3], TEST_PROPERTIES)`)
+endsnippet
 
 snippet if
 if(${1:condition})
@@ -367,7 +510,55 @@ snippet include
 include(${1:file|module}${2: ${3:OPTIONAL}}${4: ${5:RESULT_VARIABLE} ${6:variable}}${7: NO_POLICY_SCOPE})
 endsnippet
 
-# TODO: install()
+snippet install "targets"
+install(TARGETS ${1:targets}${2: EXPORT ${3:export-name}}${4:
+	$5`!p snip.rv=complete(t[5], ['ARCHIVE', 'LIBRARY', 'RUNTIME', 'FRAMEWORK', 'BUNDLE', 'PRIVATE_HEADER', 'PUBLIC_HEADER', 'RESOURCE'])` DESTINATION ${6:directory}${7:
+	INCLUDES DESTINATION ${8:directory}}${9:
+	PERMISSIONS ${10:permissions}}${11:
+	CONFIGURATIONS $12`!p snip.rv=complete(t[12], ['Debug', 'Release', 'RelMinSize', 'RelWithDebInfo'])`}${13:
+	COMPONENT ${14:component}}${15:
+	OPTIONAL}${16:
+	$17`!p snip.rv=complete(t[17], ['NAMELINK_ONLY', 'NAMELINK_SKIP'])`}})
+endsnippet
+snippet install "files or programs"
+install($1`!p snip.rv=complete(t[1], ['FILES', 'PROGRAMS'])`
+	DESTINATION ${2:directory}${3:
+	PERMISSIONS ${4:permissions}}${5:
+	CONFIGURATIONS $6`!p snip.rv=complete(t[6], ['Debug', 'Release', 'RelMinSize', 'RelWithDebInfo'])`}${7:
+	COMPONENT ${8:component}}${9:
+	RENAME ${10:name}}${11:
+	OPTIONAL})
+endsnippet
+snippet install "directories"
+install(DIRECTORY ${1:directories}
+	DESTINATION ${2:directory}${3:
+	FILE_PERMISSIONS ${4:permissions}}${5:
+	DIRECTORY_PERMISSIONS ${6:permissions}}${7:
+	USE_SOURCE_PERMISSIONS}${8:
+	OPTIONAL}${9:
+	CONFIGURATIONS $10`!p snip.rv=complete(t[10], ['Debug', 'Release', 'RelMinSize', 'RelWithDebInfo'])`}${11:
+	COMPONENT ${12:component}}${13:
+	FILES_MATCHING}${14:${15:
+	$16`!p snip.rv=complete(t[16], ['PATTERN', 'REGEX'])` ${17:pattern|regex}}${18:
+	EXCLUDE}${19:
+	PERMISSIONS ${20:permissions}}})
+endsnippet
+snippet install "script"
+install(SCRIPT ${1:file})
+endsnippet
+snippet install "code"
+install(CODE ${1:code})
+endsnippet
+snippet install "export"
+install(EXPORT ${1:export-name}
+	DESTINATION ${2:directory}${3:
+	NAMESPACE ${4:namespace}}${5:
+	FILE ${6:name}.cmake}${7:
+	PERMISSIONS ${8:permissions}}${9:
+	CONFIGURATIONS $10`!p snip.rv=complete(t[10], ['Debug', 'Release', 'RelMinSize', 'RelWithDebInfo'])`}${11:
+	EXPORT_LINK_INTERFACE_LIBRARIES}${12:
+	COMPONENT ${13:component}})
+endsnippet
 
 snippet link_directories
 link_directories(${1:directories})
@@ -438,53 +629,57 @@ separate_arguments(${1:variable} $2`!p snip.rv=complete(t[2], ['UNIX_COMMAND', '
 endsnippet
 
 snippet set_directory_properties
-set_directory_properties(PROPERTIES ${1:property} ${2:value})
+set_directory_properties(PROPERTIES $1`!p snip.rv=complete(t[1], DIRECTORY_PROPERTIES)` ${2:value})
 endsnippet
 
 snippet set_property "global"
 set_property(GLOBAL${1: ${2:APPEND}}${3: ${4:APPEND_STRING}}
-	PROPERTY ${5:name}${6: ${7:values}})
+	PROPERTY $5`!p snip.rv=complete(t[5], GLOBAL_PROPERTIES)`${6: ${7:values}})
 endsnippet
-
 snippet set_property "directory"
 set_property(DIRECTORY ${1:directory}${2: ${3:APPEND}}${4: ${5:APPEND_STRING}}
-	PROPERTY ${6:name}${7: ${8:values}})
+	PROPERTY $6`!p snip.rv=complete(t[6], DIRECTORY_PROPERTIES)`${7: ${8:values}})
 endsnippet
 snippet set_property "target"
 set_property(TARGET ${1:targets}${2: ${3:APPEND}}${4: ${5:APPEND_STRING}}
-	PROPERTY ${6:name}${7: ${8:values}})
+	PROPERTY $6`!p snip.rv=complete(t[6], TARGET_PROPERTIES)`${7: ${8:values}})
 endsnippet
 snippet set_property "source"
 set_property(SOURCE ${1:sources}${2: ${3:APPEND}}${4: ${5:APPEND_STRING}}
-	PROPERTY ${6:name}${7: ${8:values}})
+	PROPERTY $6`!p snip.rv=complete(t[6], SOURCE_FILE_PROPERTIES)`${7: ${8:values}})
 endsnippet
 snippet set_property "test"
 set_property(TEST ${1:tests}${2: ${3:APPEND}}${4: ${5:APPEND_STRING}}
-	PROPERTY ${6:name}${7: ${8:values}})
+	PROPERTY $6`!p snip.rv=complete(t[6], TEST_PROPERTIES)`${7: ${8:values}})
 endsnippet
 snippet set_property "cache"
 set_property(CACHE ${1:entries}${2: ${3:APPEND}}${4: ${5:APPEND_STRING}}
-	PROPERTY ${6:name}${7: ${8:values}})
+	PROPERTY $6`!p snip.rv=complete(t[6], CACHE_PROPERTIES)`${7: ${8:values}})
 endsnippet
 
-# TODO Add support for CACHE|PARENT_SCOPE options.
-snippet set
+snippet set "simple"
 set(${1:variable} ${2:value})
 endsnippet
+snippet set "cache"
+set(${1:variable} ${2:value} CACHE $3`!p snip.rv=complete(t[3], ['FILEPATH', 'PATH', 'STRING', 'BOOL', 'INTERNAL'])` "${4:description}"${5: FORCE})
+endsnippet
+snippet set "parent scope"
+set(${1:variable} ${2:value} PARENT_SCOPE)
+endsnippet
+snippet set "environment"
+set(ENV{${1:variable}} ${2:value})
+endsnippet
 
 snippet set_source_files_properties
-set_source_files_properties(${1:files}
-	PROPERTIES ${property} ${value})
+set_source_files_properties(${1:files} PROPERTIES $2`!p snip.rv=complete(t[2], SOURCE_FILE_PROPERTIES)` ${3:value})
 endsnippet
 
 snippet set_target_properties
-set_target_properties(${1:targets}
-	PROPERTIES ${2:property} ${3:value})
+set_target_properties(${1:targets} PROPERTIES $2`!p snip.rv=complete(t[2], TARGET_PROPERTIES)` ${3:value})
 endsnippet
 
 snippet set_tests_properties
-set_tests_properties(${1:tests}
-	PROPERTIES ${2:property} ${3:value})
+set_tests_properties(${1:tests} PROPERTIES $2`!p snip.rv=complete(t[2], TEST_PROPERTIES)` ${3:value})
 endsnippet
 
 snippet site_name