SET TARGET PROPERTIES

From KitwarePublic
Revision as of 18:13, 2 December 2009 by Abfinz (talk | contribs) (New page: set_target_properties Targets can have properties that affect how they are built. set_target_properties(target1 target2 ... PROPERTIES prop1...)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigationJump to search

set_target_properties

      Targets can have properties that affect how they are built.
        set_target_properties(target1 target2 ...
                              PROPERTIES prop1 value1
                              prop2 value2 ...)
      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.
      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).
      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 our 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.
      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.
      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.
      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.
      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.
      VS_SCC_PROJECTNAME, VS_SCC_LOCALPATH, VS_SCC_PROVIDER can be set to
      add support for source control bindings in a Visual Studio project
      file.
      When a library is built CMake by default generates code to remove any
      existing library using all possible names.  This is needed to support
      libraries that switch between STATIC and SHARED by a user option.
      However when using OUTPUT_NAME to build a static and shared library of
      the same name using different logical target names the two targets
      will remove each other's files.  This can be prevented by setting the
      CLEAN_DIRECT_OUTPUT property to 1.
      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.
      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".