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