blob: 43668eaac875b4fb476e9ed080c2999cbe05f3c2 [file] [log] [blame]
Ryan Prichard7aea7e92022-01-13 17:30:17 -08001CMAKE_CFG_INTDIR
2----------------
3
4.. deprecated:: 3.21
5
6 This variable has poor support on :generator:`Ninja Multi-Config`, and
7 predates the existence of the :genex:`$<CONFIG>` generator expression. Use
8 ``$<CONFIG>`` instead.
9
10Build-time reference to per-configuration output subdirectory.
11
12For native build systems supporting multiple configurations in the
13build tree (such as :ref:`Visual Studio Generators` and :generator:`Xcode`),
14the value is a reference to a build-time variable specifying the name
15of the per-configuration output subdirectory. On :ref:`Makefile Generators`
16this evaluates to `.` because there is only one configuration in a build tree.
17Example values:
18
19::
20
21 $(ConfigurationName) = Visual Studio 9
22 $(Configuration) = Visual Studio 10
23 $(CONFIGURATION) = Xcode
24 . = Make-based tools
25 . = Ninja
26 ${CONFIGURATION} = Ninja Multi-Config
27
28Since these values are evaluated by the native build system, this
29variable is suitable only for use in command lines that will be
30evaluated at build time. Example of intended usage:
31
32::
33
34 add_executable(mytool mytool.c)
35 add_custom_command(
36 OUTPUT out.txt
37 COMMAND ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/mytool
38 ${CMAKE_CURRENT_SOURCE_DIR}/in.txt out.txt
39 DEPENDS mytool in.txt
40 )
41 add_custom_target(drive ALL DEPENDS out.txt)
42
43Note that ``CMAKE_CFG_INTDIR`` is no longer necessary for this purpose but
44has been left for compatibility with existing projects. Instead
45:command:`add_custom_command` recognizes executable target names in its
46``COMMAND`` option, so
47``${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/mytool`` can be replaced
48by just ``mytool``.
49
50This variable is read-only. Setting it is undefined behavior. In
51multi-configuration build systems the value of this variable is passed
52as the value of preprocessor symbol ``CMAKE_INTDIR`` to the compilation
53of all source files.