Spec-Zone.ru › CMake 3.29

ENABLE_EXPORTS

Укажите, экспортирует ли исполняемый файл или общая библиотека символы.

Обычно исполняемый файл не экспортирует символы, поскольку он является конечной программой. Исполняемый файл может экспортировать символы для использования загружаемыми модулями. Если этот параметр установлен в значение «истина», CMake позволит другим целевым объектам «связывать» исполняемый файл с помощью команды target_link_libraries(). На всех платформах для целевых объектов, которые связываются с исполняемым файлом, создаётся зависимость от уровня целевого объекта. Обработка исполняемого файла в строках связи загружаемых модулей различается в зависимости от платформы:

  • В системах на основе Windows (включая Cygwin) вместе с исполняемым файлом создаётся «библиотека импорта», в которой перечислены экспортируемые символы. Загружаемые модули связываются с библиотекой импорта, чтобы получить символы.
  • В macOS загружаемые модули связываются с самим исполняемым файлом с использованием флага -bundle_loader.
  • В AIX вместе с исполняемым файлом создаётся «файл импорта» компоновщика, содержащий список экспортируемых символов для импорта при связывании других целевых объектов. Загружаемые модули связываются с файлом импорта, чтобы получить символы.
  • На других платформах загружаемые модули просто связываются без ссылки на исполняемый файл, так как динамический загрузчик автоматически связывает символы при загрузке модуля.

Этот параметр инициализируется значением переменной CMAKE_EXECUTABLE_ENABLE_EXPORTS, если она установлена при создании исполняемого целевого объекта. Если CMAKE_EXECUTABLE_ENABLE_EXPORTS не установлена, для инициализации параметра используется переменная CMAKE_ENABLE_EXPORTS из-за обратной совместимости. Ниже приведено альтернативное поведение инициализации для целевых объектов общих библиотек.

Новое в версии 3.27: Для связи с общей библиотекой в macOS или с общей библиотекой фреймворка на любой платформе Apple может использоваться файл импорта компоновщика вместо фактической общей библиотеки. Эти файлы импорта компоновщика также известны как текстовые псевдонимы, и у них есть расширение файла .tbd.

Генерация этих файлов импорта компоновщика, а также их использование контролируются этим параметром. Если этот параметр установлен в значение «истина» для целевого объекта общей библиотеки, CMake сгенерирует файл .tbd для библиотеки. Другие целевые объекты, которые связываются с целевым объектом общей библиотеки, будут использовать этот файл .tbd при связывании вместо связи с двоичным файлом общей библиотеки.

Примечание

Из-за обратной совместимости этот параметр будет проигнорирован, если параметр целевого объекта XCODE_ATTRIBUTE_GENERATE_TEXT_BASED_STUBS или переменная CMAKE_XCODE_ATTRIBUTE_GENERATE_TEXT_BASED_STUBS установлены в значение «ложь».

Для целевых объектов общих библиотек этот параметр инициализируется значением переменной CMAKE_SHARED_LIBRARY_ENABLE_EXPORTS, если она установлена при создании целевого объекта.

© 2000–2024 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.29/prop_tgt/ENABLE_EXPORTS.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API