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/latest/prop_tgt/ENABLE_EXPORTS.html