diff options
Diffstat (limited to 'Source/cmSetTargetPropertiesCommand.h')
-rw-r--r-- | Source/cmSetTargetPropertiesCommand.h | 170 |
1 files changed, 170 insertions, 0 deletions
diff --git a/Source/cmSetTargetPropertiesCommand.h b/Source/cmSetTargetPropertiesCommand.h new file mode 100644 index 0000000..cf9c193 --- /dev/null +++ b/Source/cmSetTargetPropertiesCommand.h @@ -0,0 +1,170 @@ +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium + + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. + + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ +#ifndef cmSetTargetsPropertiesCommand_h +#define cmSetTargetsPropertiesCommand_h + +#include "cmCommand.h" + +class cmSetTargetPropertiesCommand : public cmCommand +{ +public: + virtual cmCommand* Clone() + { + return new cmSetTargetPropertiesCommand; + } + + /** + * This is called when the command is first encountered in + * the input file. + */ + virtual bool InitialPass(std::vector<std::string> const& args, + cmExecutionStatus &status); + + /** + * The name of the command as specified in CMakeList.txt. + */ + virtual const char* GetName() const { return "set_target_properties";} + + /** + * Succinct documentation. + */ + virtual const char* GetTerseDocumentation() const + { + return "Targets can have properties that affect how they are built."; + } + + /** + * Used by this command and cmSetPropertiesCommand + */ + static bool SetOneTarget(const char *tname, + std::vector<std::string> &propertyPairs, + cmMakefile *mf); + + /** + * Longer documentation. + */ + virtual const char* GetFullDocumentation() const + { + return + " set_target_properties(target1 target2 ...\n" + " PROPERTIES prop1 value1\n" + " prop2 value2 ...)\n" + "Set properties on a target. The syntax for the command is to " + "list all the files you want " + "to change, and then provide the values you want to set next. " + "You can use any prop value pair you want and " + "extract it later with the GET_TARGET_PROPERTY command.\n" + "Properties that affect the name of a target's output file are " + "as follows. " + "The PREFIX and SUFFIX properties override the default target name " + "prefix (such as \"lib\") and suffix (such as \".so\"). " + "IMPORT_PREFIX and IMPORT_SUFFIX are the equivalent properties for " + "the import library corresponding to a DLL " + "(for SHARED library targets). " + "OUTPUT_NAME sets the real name of a target when it is built and " + "can be used to help create two targets of the same name even though " + "CMake requires unique logical target names. There is also a " + "<CONFIG>_OUTPUT_NAME that can set the output name on a " + "per-configuration basis. " + "<CONFIG>_POSTFIX sets a postfix for the real name of the target " + "when it is built under the configuration named by <CONFIG> " + "(in upper-case, such as \"DEBUG_POSTFIX\"). The value of " + "this property is initialized when the target is created to the " + "value of the variable CMAKE_<CONFIG>_POSTFIX (except for executable " + "targets because earlier CMake versions which did not use this " + "variable for executables)." + "\n" + "The LINK_FLAGS property can be used to add extra flags to the " + "link step of a target. LINK_FLAGS_<CONFIG> will add to the " + "configuration <CONFIG>, " + "for example, DEBUG, RELEASE, MINSIZEREL, RELWITHDEBINFO. " + "DEFINE_SYMBOL sets the name of the preprocessor symbol defined when " + "compiling sources in a shared library. " + "If not set here then it is set to target_EXPORTS by default " + "(with some substitutions if the target is not a valid C " + "identifier). This is useful for headers to know whether they are " + "being included from inside their library or outside to properly " + "setup dllexport/dllimport decorations. " + "The COMPILE_FLAGS property sets additional compiler flags used " + "to build sources within the target. It may also be used to pass " + "additional preprocessor definitions." + "\n" + "The LINKER_LANGUAGE property is used to change the tool " + "used to link an executable or shared library. The default is " + "set the language to match the files in the library. CXX and C " + "are common values for this property." + "\n" + "For shared libraries VERSION and SOVERSION can be used to specify " + "the build version and API version respectively. When building or " + "installing appropriate symlinks are created if the platform " + "supports symlinks and the linker supports so-names. " + "If only one of both is specified the missing is assumed to have " + "the same version number. " + "For executables VERSION can be used to specify the build version. " + "When building or installing appropriate symlinks are created if " + "the platform supports symlinks. " + "For shared libraries and executables on Windows the VERSION " + "attribute is parsed to extract a \"major.minor\" version number. " + "These numbers are used as the image version of the binary. " + "\n" + "There are a few properties used to specify RPATH rules. " + "INSTALL_RPATH is a semicolon-separated list specifying the rpath " + "to use in installed targets (for platforms that support it). " + "INSTALL_RPATH_USE_LINK_PATH is a boolean that if set to true will " + "append directories in the linker search path and outside the " + "project to the INSTALL_RPATH. " + "SKIP_BUILD_RPATH is a boolean specifying whether to skip automatic " + "generation of an rpath allowing the target to run from the " + "build tree. " + "BUILD_WITH_INSTALL_RPATH is a boolean specifying whether to link " + "the target in the build tree with the INSTALL_RPATH. This takes " + "precedence over SKIP_BUILD_RPATH and avoids the need for relinking " + "before installation. INSTALL_NAME_DIR is a string specifying the " + "directory portion of the \"install_name\" field of shared libraries " + "on Mac OSX to use in the installed targets. " + "When the target is created the values of " + "the variables CMAKE_INSTALL_RPATH, " + "CMAKE_INSTALL_RPATH_USE_LINK_PATH, CMAKE_SKIP_BUILD_RPATH, " + "CMAKE_BUILD_WITH_INSTALL_RPATH, and CMAKE_INSTALL_NAME_DIR " + "are used to initialize these properties.\n" + "PROJECT_LABEL can be used to change the name of " + "the target in an IDE like visual studio. VS_KEYWORD can be set " + "to change the visual studio keyword, for example Qt integration " + "works better if this is set to Qt4VSv1.0.\n" + "VS_SCC_PROJECTNAME, VS_SCC_LOCALPATH, VS_SCC_PROVIDER and " + "VS_SCC_AUXPATH can be set " + "to add support for source control bindings in a Visual Studio " + "project file.\n" + "VS_GLOBAL_<variable> can be set to add a Visual Studio " + "project-specific global variable. " + "Qt integration works better if VS_GLOBAL_QtVersion is set to " + "the Qt version FindQt4.cmake found. For example, \"4.7.3\"\n" + "The PRE_INSTALL_SCRIPT and POST_INSTALL_SCRIPT properties are the " + "old way to specify CMake scripts to run before and after " + "installing a target. They are used only when the old " + "INSTALL_TARGETS command is used to install the target. Use the " + "INSTALL command instead." + "\n" + "The EXCLUDE_FROM_DEFAULT_BUILD property is used by the visual " + "studio generators. If it is set to 1 the target will not be " + "part of the default build when you select \"Build Solution\". " + "This can also be set on a per-configuration basis using " + "EXCLUDE_FROM_DEFAULT_BUILD_<CONFIG>." + ; + } + + cmTypeMacro(cmSetTargetPropertiesCommand, cmCommand); +}; + + + +#endif |