CMake/Help/command/set_target_properties.rst

105 lines
5.3 KiB
ReStructuredText
Raw Normal View History

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 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.
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 and
VS_SCC_AUXPATH can be set to add support for source control bindings
in a Visual Studio project file.
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"
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". This can also be set
on a per-configuration basis using
EXCLUDE_FROM_DEFAULT_BUILD_<CONFIG>.