summaryrefslogtreecommitdiff
path: root/Source/cmAddLibraryCommand.h
diff options
context:
space:
mode:
authorStephen Kelly <steveire@gmail.com>2012-11-02 15:47:40 +0100
committerBrad King <brad.king@kitware.com>2013-10-07 19:56:31 -0400
commitfe732264e9abb6249d1d112b24ce36b226590105 (patch)
tree97c08c00ec43b68f692d50729f536d84c7c0d13a /Source/cmAddLibraryCommand.h
parentd4134352abf69374fdad24d53d67734a135daaa5 (diff)
downloadcmake-fe732264e9abb6249d1d112b24ce36b226590105.tar.gz
Add the INTERFACE_LIBRARY target type.
This target type only contains INTERFACE_* properties, so it can be used as a structural node. The target-specific commands enforce that they may only be used with the INTERFACE keyword when used with INTERFACE_LIBRARY targets. The old-style target properties matching LINK_INTERFACE_LIBRARIES_<CONFIG> are always ignored for this target type. The name of the INTERFACE_LIBRARY must match a validity generator expression. The validity is similar to that of an ALIAS target, but with the additional restriction that it may not contain double colons. Double colons will carry the meaning of IMPORTED or ALIAS targets in CMake 2.8.13. An ALIAS target may be created for an INTERFACE library. At this point it can not be exported and does not appear in the buildsystem and project files are not created for them. That may be added as a feature in a later commit. The generators need some changes to handle the INTERFACE_LIBRARY targets returned by cmComputeLinkInterface::GetItems. The Ninja generator does not use that API, so it doesn't require changes related to that.
Diffstat (limited to 'Source/cmAddLibraryCommand.h')
-rw-r--r--Source/cmAddLibraryCommand.h10
1 files changed, 10 insertions, 0 deletions
diff --git a/Source/cmAddLibraryCommand.h b/Source/cmAddLibraryCommand.h
index 59354b0f5d..64d048b277 100644
--- a/Source/cmAddLibraryCommand.h
+++ b/Source/cmAddLibraryCommand.h
@@ -151,6 +151,16 @@ public:
"properties of <target>, that is, it may not be used as the operand of "
"set_property, set_target_properties, target_link_libraries etc. An "
"ALIAS target may not be installed of exported."
+ "\n"
+ "The signature\n"
+ " add_library(<name> INTERFACE)\n"
+ "creates an interface target. An interface target does not directly "
+ "create build output, though it may have properties set on it and it "
+ "may be installed, exported and imported. Typically the INTERFACE_* "
+ "properties are populated on the interface target using the "
+ "set_property(), target_link_libraries(), target_include_directories() "
+ "and target_compile_defintions() commands, and then it is used as an "
+ "argument to target_link_libraries() like any other target."
;
}