CPackComponent.cmake 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541
  1. # Distributed under the OSI-approved BSD 3-Clause License. See accompanying
  2. # file Copyright.txt or https://cmake.org/licensing for details.
  3. #[=======================================================================[.rst:
  4. CPackComponent
  5. --------------
  6. Build binary and source package installers
  7. Variables concerning CPack Components
  8. ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  9. The CPackComponent module is the module which handles the component
  10. part of CPack. See CPack module for general information about CPack.
  11. For certain kinds of binary installers (including the graphical
  12. installers on macOS and Windows), CPack generates installers that
  13. allow users to select individual application components to install.
  14. The contents of each of the components are identified by the COMPONENT
  15. argument of CMake's INSTALL command. These components can be
  16. annotated with user-friendly names and descriptions, inter-component
  17. dependencies, etc., and grouped in various ways to customize the
  18. resulting installer. See the cpack_add_* commands, described below,
  19. for more information about component-specific installations.
  20. Component-specific installation allows users to select specific sets
  21. of components to install during the install process. Installation
  22. components are identified by the COMPONENT argument of CMake's INSTALL
  23. commands, and should be further described by the following CPack
  24. commands:
  25. .. variable:: CPACK_COMPONENTS_ALL
  26. The list of component to install.
  27. The default value of this variable is computed by CPack and contains all
  28. components defined by the project. The user may set it to only include the
  29. specified components.
  30. Instead of specifying all the desired components, it is possible to obtain a
  31. list of all defined components and then remove the unwanted ones from the
  32. list. The :command:`get_cmake_property` command can be used to obtain the
  33. ``COMPONENTS`` property, then the :command:`list(REMOVE_ITEM)` command can be
  34. used to remove the unwanted ones. For example, to use all defined components
  35. except ``foo`` and ``bar``::
  36. get_cmake_property(CPACK_COMPONENTS_ALL COMPONENTS)
  37. list(REMOVE_ITEM CPACK_COMPONENTS_ALL "foo" "bar")
  38. .. variable:: CPACK_<GENNAME>_COMPONENT_INSTALL
  39. Enable/Disable component install for CPack generator <GENNAME>.
  40. Each CPack Generator (RPM, DEB, ARCHIVE, NSIS, DMG, etc...) has a legacy
  41. default behavior. e.g. RPM builds monolithic whereas NSIS builds
  42. component. One can change the default behavior by setting this variable to
  43. 0/1 or OFF/ON.
  44. .. variable:: CPACK_COMPONENTS_GROUPING
  45. Specify how components are grouped for multi-package component-aware CPack
  46. generators.
  47. Some generators like RPM or ARCHIVE family (TGZ, ZIP, ...) generates
  48. several packages files when asked for component packaging. They group
  49. the component differently depending on the value of this variable:
  50. * ONE_PER_GROUP (default): creates one package file per component group
  51. * ALL_COMPONENTS_IN_ONE : creates a single package with all (requested) components
  52. * IGNORE : creates one package per component, i.e. IGNORE component group
  53. One can specify different grouping for different CPack generator by
  54. using a CPACK_PROJECT_CONFIG_FILE.
  55. .. variable:: CPACK_COMPONENT_<compName>_DISPLAY_NAME
  56. The name to be displayed for a component.
  57. .. variable:: CPACK_COMPONENT_<compName>_DESCRIPTION
  58. The description of a component.
  59. .. variable:: CPACK_COMPONENT_<compName>_GROUP
  60. The group of a component.
  61. .. variable:: CPACK_COMPONENT_<compName>_DEPENDS
  62. The dependencies (list of components) on which this component depends.
  63. .. variable:: CPACK_COMPONENT_<compName>_HIDDEN
  64. True if this component is hidden from the user.
  65. .. variable:: CPACK_COMPONENT_<compName>_REQUIRED
  66. True if this component is required.
  67. .. variable:: CPACK_COMPONENT_<compName>_DISABLED
  68. True if this component is not selected to be installed by default.
  69. .. command:: cpack_add_component
  70. Describes a CPack installation
  71. component named by the COMPONENT argument to a CMake INSTALL command.
  72. ::
  73. cpack_add_component(compname
  74. [DISPLAY_NAME name]
  75. [DESCRIPTION description]
  76. [HIDDEN | REQUIRED | DISABLED ]
  77. [GROUP group]
  78. [DEPENDS comp1 comp2 ... ]
  79. [INSTALL_TYPES type1 type2 ... ]
  80. [DOWNLOADED]
  81. [ARCHIVE_FILE filename]
  82. [PLIST filename])
  83. The cmake_add_component command describes an installation component,
  84. which the user can opt to install or remove as part of the graphical
  85. installation process. compname is the name of the component, as
  86. provided to the COMPONENT argument of one or more CMake INSTALL
  87. commands.
  88. DISPLAY_NAME is the displayed name of the component, used in graphical
  89. installers to display the component name. This value can be any
  90. string.
  91. DESCRIPTION is an extended description of the component, used in
  92. graphical installers to give the user additional information about the
  93. component. Descriptions can span multiple lines using ``\n`` as the
  94. line separator. Typically, these descriptions should be no more than
  95. a few lines long.
  96. HIDDEN indicates that this component will be hidden in the graphical
  97. installer, so that the user cannot directly change whether it is
  98. installed or not.
  99. REQUIRED indicates that this component is required, and therefore will
  100. always be installed. It will be visible in the graphical installer,
  101. but it cannot be unselected. (Typically, required components are
  102. shown greyed out).
  103. DISABLED indicates that this component should be disabled (unselected)
  104. by default. The user is free to select this component for
  105. installation, unless it is also HIDDEN.
  106. DEPENDS lists the components on which this component depends. If this
  107. component is selected, then each of the components listed must also be
  108. selected. The dependency information is encoded within the installer
  109. itself, so that users cannot install inconsistent sets of components.
  110. GROUP names the component group of which this component is a part. If
  111. not provided, the component will be a standalone component, not part
  112. of any component group. Component groups are described with the
  113. cpack_add_component_group command, detailed below.
  114. INSTALL_TYPES lists the installation types of which this component is
  115. a part. When one of these installations types is selected, this
  116. component will automatically be selected. Installation types are
  117. described with the cpack_add_install_type command, detailed below.
  118. DOWNLOADED indicates that this component should be downloaded
  119. on-the-fly by the installer, rather than packaged in with the
  120. installer itself. For more information, see the
  121. cpack_configure_downloads command.
  122. ARCHIVE_FILE provides a name for the archive file created by CPack to
  123. be used for downloaded components. If not supplied, CPack will create
  124. a file with some name based on CPACK_PACKAGE_FILE_NAME and the name of
  125. the component. See cpack_configure_downloads for more information.
  126. PLIST gives a filename that is passed to pkgbuild with the
  127. ``--component-plist`` argument when using the productbuild generator.
  128. .. command:: cpack_add_component_group
  129. Describes a group of related CPack installation components.
  130. ::
  131. cpack_add_component_group(groupname
  132. [DISPLAY_NAME name]
  133. [DESCRIPTION description]
  134. [PARENT_GROUP parent]
  135. [EXPANDED]
  136. [BOLD_TITLE])
  137. The cpack_add_component_group describes a group of installation
  138. components, which will be placed together within the listing of
  139. options. Typically, component groups allow the user to
  140. select/deselect all of the components within a single group via a
  141. single group-level option. Use component groups to reduce the
  142. complexity of installers with many options. groupname is an arbitrary
  143. name used to identify the group in the GROUP argument of the
  144. cpack_add_component command, which is used to place a component in a
  145. group. The name of the group must not conflict with the name of any
  146. component.
  147. DISPLAY_NAME is the displayed name of the component group, used in
  148. graphical installers to display the component group name. This value
  149. can be any string.
  150. DESCRIPTION is an extended description of the component group, used in
  151. graphical installers to give the user additional information about the
  152. components within that group. Descriptions can span multiple lines
  153. using ``\n`` as the line separator. Typically, these descriptions
  154. should be no more than a few lines long.
  155. PARENT_GROUP, if supplied, names the parent group of this group.
  156. Parent groups are used to establish a hierarchy of groups, providing
  157. an arbitrary hierarchy of groups.
  158. EXPANDED indicates that, by default, the group should show up as
  159. "expanded", so that the user immediately sees all of the components
  160. within the group. Otherwise, the group will initially show up as a
  161. single entry.
  162. BOLD_TITLE indicates that the group title should appear in bold, to
  163. call the user's attention to the group.
  164. .. command:: cpack_add_install_type
  165. Add a new installation type containing
  166. a set of predefined component selections to the graphical installer.
  167. ::
  168. cpack_add_install_type(typename
  169. [DISPLAY_NAME name])
  170. The cpack_add_install_type command identifies a set of preselected
  171. components that represents a common use case for an application. For
  172. example, a "Developer" install type might include an application along
  173. with its header and library files, while an "End user" install type
  174. might just include the application's executable. Each component
  175. identifies itself with one or more install types via the INSTALL_TYPES
  176. argument to cpack_add_component.
  177. DISPLAY_NAME is the displayed name of the install type, which will
  178. typically show up in a drop-down box within a graphical installer.
  179. This value can be any string.
  180. .. command:: cpack_configure_downloads
  181. Configure CPack to download
  182. selected components on-the-fly as part of the installation process.
  183. ::
  184. cpack_configure_downloads(site
  185. [UPLOAD_DIRECTORY dirname]
  186. [ALL]
  187. [ADD_REMOVE|NO_ADD_REMOVE])
  188. The cpack_configure_downloads command configures installation-time
  189. downloads of selected components. For each downloadable component,
  190. CPack will create an archive containing the contents of that
  191. component, which should be uploaded to the given site. When the user
  192. selects that component for installation, the installer will download
  193. and extract the component in place. This feature is useful for
  194. creating small installers that only download the requested components,
  195. saving bandwidth. Additionally, the installers are small enough that
  196. they will be installed as part of the normal installation process, and
  197. the "Change" button in Windows Add/Remove Programs control panel will
  198. allow one to add or remove parts of the application after the original
  199. installation. On Windows, the downloaded-components functionality
  200. requires the ZipDLL plug-in for NSIS, available at:
  201. ::
  202. http://nsis.sourceforge.net/ZipDLL_plug-in
  203. On macOS, installers that download components on-the-fly can only
  204. be built and installed on system using macOS 10.5 or later.
  205. The site argument is a URL where the archives for downloadable
  206. components will reside, e.g.,
  207. https://cmake.org/files/2.6.1/installer/ All of the archives
  208. produced by CPack should be uploaded to that location.
  209. UPLOAD_DIRECTORY is the local directory where CPack will create the
  210. various archives for each of the components. The contents of this
  211. directory should be uploaded to a location accessible by the URL given
  212. in the site argument. If omitted, CPack will use the directory
  213. CPackUploads inside the CMake binary directory to store the generated
  214. archives.
  215. The ALL flag indicates that all components be downloaded. Otherwise,
  216. only those components explicitly marked as DOWNLOADED or that have a
  217. specified ARCHIVE_FILE will be downloaded. Additionally, the ALL
  218. option implies ADD_REMOVE (unless NO_ADD_REMOVE is specified).
  219. ADD_REMOVE indicates that CPack should install a copy of the installer
  220. that can be called from Windows' Add/Remove Programs dialog (via the
  221. "Modify" button) to change the set of installed components.
  222. NO_ADD_REMOVE turns off this behavior. This option is ignored on Mac
  223. OS X.
  224. #]=======================================================================]
  225. # Define var in order to avoid multiple inclusion
  226. if(NOT CPackComponent_CMake_INCLUDED)
  227. set(CPackComponent_CMake_INCLUDED 1)
  228. # Macro that appends a SET command for the given variable name (var)
  229. # to the macro named strvar, but only if the variable named "var"
  230. # has been defined. The string will eventually be appended to a CPack
  231. # configuration file.
  232. macro(cpack_append_variable_set_command var strvar)
  233. if (DEFINED ${var})
  234. string(APPEND ${strvar} "set(${var}")
  235. foreach(APPENDVAL ${${var}})
  236. string(APPEND ${strvar} " ${APPENDVAL}")
  237. endforeach()
  238. string(APPEND ${strvar} ")\n")
  239. endif ()
  240. endmacro()
  241. # Macro that appends a SET command for the given variable name (var)
  242. # to the macro named strvar, but only if the variable named "var"
  243. # has been defined and is a string. The string will eventually be
  244. # appended to a CPack configuration file.
  245. macro(cpack_append_string_variable_set_command var strvar)
  246. if (DEFINED ${var})
  247. list(LENGTH ${var} CPACK_APP_VALUE_LEN)
  248. if(${CPACK_APP_VALUE_LEN} EQUAL 1)
  249. string(APPEND ${strvar} "set(${var} \"${${var}}\")\n")
  250. endif()
  251. endif ()
  252. endmacro()
  253. # Macro that appends a SET command for the given list variable name (var)
  254. # to the macro named strvar, but only if the variable named "var"
  255. # has been defined. It's like add variable, but wrap each item to quotes.
  256. # The string will eventually be appended to a CPack configuration file.
  257. macro(cpack_append_list_variable_set_command var strvar)
  258. if (DEFINED ${var})
  259. string(APPEND ${strvar} "set(${var}")
  260. foreach(_val IN LISTS ${var})
  261. string(APPEND ${strvar} "\n \"${_val}\"")
  262. endforeach()
  263. string(APPEND ${strvar} ")\n")
  264. endif ()
  265. endmacro()
  266. # Macro that appends a SET command for the given variable name (var)
  267. # to the macro named strvar, but only if the variable named "var"
  268. # has been set to true. The string will eventually be
  269. # appended to a CPack configuration file.
  270. macro(cpack_append_option_set_command var strvar)
  271. if (${var})
  272. list(LENGTH ${var} CPACK_APP_VALUE_LEN)
  273. if(${CPACK_APP_VALUE_LEN} EQUAL 1)
  274. string(APPEND ${strvar} "set(${var} TRUE)\n")
  275. endif()
  276. endif ()
  277. endmacro()
  278. # Macro that adds a component to the CPack installer
  279. macro(cpack_add_component compname)
  280. string(TOUPPER ${compname} _CPACK_ADDCOMP_UNAME)
  281. cmake_parse_arguments(CPACK_COMPONENT_${_CPACK_ADDCOMP_UNAME}
  282. "HIDDEN;REQUIRED;DISABLED;DOWNLOADED"
  283. "DISPLAY_NAME;DESCRIPTION;GROUP;ARCHIVE_FILE;PLIST"
  284. "DEPENDS;INSTALL_TYPES"
  285. ${ARGN}
  286. )
  287. if (CPACK_COMPONENT_${_CPACK_ADDCOMP_UNAME}_DOWNLOADED)
  288. set(_CPACK_ADDCOMP_STR "\n# Configuration for downloaded component \"${compname}\"\n")
  289. else ()
  290. set(_CPACK_ADDCOMP_STR "\n# Configuration for component \"${compname}\"\n")
  291. endif ()
  292. if(NOT CPACK_MONOLITHIC_INSTALL)
  293. # If the user didn't set CPACK_COMPONENTS_ALL explicitly, update the
  294. # value of CPACK_COMPONENTS_ALL in the configuration file. This will
  295. # take care of any components that have been added after the CPack
  296. # moduled was included.
  297. if(NOT CPACK_COMPONENTS_ALL_SET_BY_USER)
  298. get_cmake_property(_CPACK_ADDCOMP_COMPONENTS COMPONENTS)
  299. string(APPEND _CPACK_ADDCOMP_STR "\nSET(CPACK_COMPONENTS_ALL")
  300. foreach(COMP ${_CPACK_ADDCOMP_COMPONENTS})
  301. string(APPEND _CPACK_ADDCOMP_STR " ${COMP}")
  302. endforeach()
  303. string(APPEND _CPACK_ADDCOMP_STR ")\n")
  304. endif()
  305. endif()
  306. cpack_append_string_variable_set_command(
  307. CPACK_COMPONENT_${_CPACK_ADDCOMP_UNAME}_DISPLAY_NAME
  308. _CPACK_ADDCOMP_STR)
  309. cpack_append_string_variable_set_command(
  310. CPACK_COMPONENT_${_CPACK_ADDCOMP_UNAME}_DESCRIPTION
  311. _CPACK_ADDCOMP_STR)
  312. cpack_append_variable_set_command(
  313. CPACK_COMPONENT_${_CPACK_ADDCOMP_UNAME}_GROUP
  314. _CPACK_ADDCOMP_STR)
  315. cpack_append_variable_set_command(
  316. CPACK_COMPONENT_${_CPACK_ADDCOMP_UNAME}_DEPENDS
  317. _CPACK_ADDCOMP_STR)
  318. cpack_append_variable_set_command(
  319. CPACK_COMPONENT_${_CPACK_ADDCOMP_UNAME}_INSTALL_TYPES
  320. _CPACK_ADDCOMP_STR)
  321. cpack_append_string_variable_set_command(
  322. CPACK_COMPONENT_${_CPACK_ADDCOMP_UNAME}_ARCHIVE_FILE
  323. _CPACK_ADDCOMP_STR)
  324. cpack_append_option_set_command(
  325. CPACK_COMPONENT_${_CPACK_ADDCOMP_UNAME}_HIDDEN
  326. _CPACK_ADDCOMP_STR)
  327. cpack_append_option_set_command(
  328. CPACK_COMPONENT_${_CPACK_ADDCOMP_UNAME}_REQUIRED
  329. _CPACK_ADDCOMP_STR)
  330. cpack_append_option_set_command(
  331. CPACK_COMPONENT_${_CPACK_ADDCOMP_UNAME}_DISABLED
  332. _CPACK_ADDCOMP_STR)
  333. cpack_append_option_set_command(
  334. CPACK_COMPONENT_${_CPACK_ADDCOMP_UNAME}_DOWNLOADED
  335. _CPACK_ADDCOMP_STR)
  336. cpack_append_string_variable_set_command(
  337. CPACK_COMPONENT_${_CPACK_ADDCOMP_UNAME}_PLIST
  338. _CPACK_ADDCOMP_STR)
  339. # Backward compatibility issue.
  340. # Write to config iff the macros is used after CPack.cmake has been
  341. # included, other it's not necessary because the variables
  342. # will be encoded by cpack_encode_variables.
  343. if(CPack_CMake_INCLUDED)
  344. file(APPEND "${CPACK_OUTPUT_CONFIG_FILE}" "${_CPACK_ADDCOMP_STR}")
  345. endif()
  346. endmacro()
  347. # Macro that adds a component group to the CPack installer
  348. macro(cpack_add_component_group grpname)
  349. string(TOUPPER ${grpname} _CPACK_ADDGRP_UNAME)
  350. cmake_parse_arguments(CPACK_COMPONENT_GROUP_${_CPACK_ADDGRP_UNAME}
  351. "EXPANDED;BOLD_TITLE"
  352. "DISPLAY_NAME;DESCRIPTION;PARENT_GROUP"
  353. ""
  354. ${ARGN}
  355. )
  356. set(_CPACK_ADDGRP_STR "\n# Configuration for component group \"${grpname}\"\n")
  357. cpack_append_string_variable_set_command(
  358. CPACK_COMPONENT_GROUP_${_CPACK_ADDGRP_UNAME}_DISPLAY_NAME
  359. _CPACK_ADDGRP_STR)
  360. cpack_append_string_variable_set_command(
  361. CPACK_COMPONENT_GROUP_${_CPACK_ADDGRP_UNAME}_DESCRIPTION
  362. _CPACK_ADDGRP_STR)
  363. cpack_append_string_variable_set_command(
  364. CPACK_COMPONENT_GROUP_${_CPACK_ADDGRP_UNAME}_PARENT_GROUP
  365. _CPACK_ADDGRP_STR)
  366. cpack_append_option_set_command(
  367. CPACK_COMPONENT_GROUP_${_CPACK_ADDGRP_UNAME}_EXPANDED
  368. _CPACK_ADDGRP_STR)
  369. cpack_append_option_set_command(
  370. CPACK_COMPONENT_GROUP_${_CPACK_ADDGRP_UNAME}_BOLD_TITLE
  371. _CPACK_ADDGRP_STR)
  372. # Backward compatibility issue.
  373. # Write to config iff the macros is used after CPack.cmake has been
  374. # included, other it's not necessary because the variables
  375. # will be encoded by cpack_encode_variables.
  376. if(CPack_CMake_INCLUDED)
  377. file(APPEND "${CPACK_OUTPUT_CONFIG_FILE}" "${_CPACK_ADDGRP_STR}")
  378. endif()
  379. endmacro()
  380. # Macro that adds an installation type to the CPack installer
  381. macro(cpack_add_install_type insttype)
  382. string(TOUPPER ${insttype} _CPACK_INSTTYPE_UNAME)
  383. cmake_parse_arguments(CPACK_INSTALL_TYPE_${_CPACK_INSTTYPE_UNAME}
  384. ""
  385. "DISPLAY_NAME"
  386. ""
  387. ${ARGN}
  388. )
  389. set(_CPACK_INSTTYPE_STR
  390. "\n# Configuration for installation type \"${insttype}\"\n")
  391. string(APPEND _CPACK_INSTTYPE_STR
  392. "list(APPEND CPACK_ALL_INSTALL_TYPES ${insttype})\n")
  393. cpack_append_string_variable_set_command(
  394. CPACK_INSTALL_TYPE_${_CPACK_INSTTYPE_UNAME}_DISPLAY_NAME
  395. _CPACK_INSTTYPE_STR)
  396. # Backward compatibility issue.
  397. # Write to config iff the macros is used after CPack.cmake has been
  398. # included, other it's not necessary because the variables
  399. # will be encoded by cpack_encode_variables.
  400. if(CPack_CMake_INCLUDED)
  401. file(APPEND "${CPACK_OUTPUT_CONFIG_FILE}" "${_CPACK_INSTTYPE_STR}")
  402. endif()
  403. endmacro()
  404. macro(cpack_configure_downloads site)
  405. cmake_parse_arguments(CPACK_DOWNLOAD
  406. "ALL;ADD_REMOVE;NO_ADD_REMOVE"
  407. "UPLOAD_DIRECTORY"
  408. ""
  409. ${ARGN}
  410. )
  411. set(CPACK_CONFIG_DL_STR
  412. "\n# Downloaded components configuration\n")
  413. set(CPACK_UPLOAD_DIRECTORY ${CPACK_DOWNLOAD_UPLOAD_DIRECTORY})
  414. set(CPACK_DOWNLOAD_SITE ${site})
  415. cpack_append_string_variable_set_command(
  416. CPACK_DOWNLOAD_SITE
  417. CPACK_CONFIG_DL_STR)
  418. cpack_append_string_variable_set_command(
  419. CPACK_UPLOAD_DIRECTORY
  420. CPACK_CONFIG_DL_STR)
  421. cpack_append_option_set_command(
  422. CPACK_DOWNLOAD_ALL
  423. CPACK_CONFIG_DL_STR)
  424. if (${CPACK_DOWNLOAD_ALL} AND NOT ${CPACK_DOWNLOAD_NO_ADD_REMOVE})
  425. set(CPACK_DOWNLOAD_ADD_REMOVE ON)
  426. endif ()
  427. set(CPACK_ADD_REMOVE ${CPACK_DOWNLOAD_ADD_REMOVE})
  428. cpack_append_option_set_command(
  429. CPACK_ADD_REMOVE
  430. CPACK_CONFIG_DL_STR)
  431. # Backward compatibility issue.
  432. # Write to config iff the macros is used after CPack.cmake has been
  433. # included, other it's not necessary because the variables
  434. # will be encoded by cpack_encode_variables.
  435. if(CPack_CMake_INCLUDED)
  436. file(APPEND "${CPACK_OUTPUT_CONFIG_FILE}" "${CPACK_CONFIG_DL_STR}")
  437. endif()
  438. endmacro()
  439. endif()