ENABLE_EXPORTS
Указывает, экспортирует ли исполняемый файл или разделяемая библиотека символы.
Обычно исполняемый файл не экспортирует символы, поскольку это конечная программа. Однако исполняемый файл может экспортировать символы, используемые загружаемыми модулями. Если для этого свойства задано значение true, 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.
Создание этих файлов импорта компоновщика и их использование контролируются этим свойством. Если для этого свойства задано значение true у цели-разделяемой библиотеки, CMake создаст для неё файл .tbd. При компоновке другие цели, связанные с этой целью-разделяемой библиотекой, будут использовать этот файл .tbd вместо компоновки с двоичным файлом разделяемой библиотеки.
Примечание
Для обратной совместимости это свойство игнорируется, если для свойства цели XCODE_ATTRIBUTE_GENERATE_TEXT_BASED_STUBS или переменной CMAKE_XCODE_ATTRIBUTE_GENERATE_TEXT_BASED_STUBS задано значение false.
Для целей-разделяемых библиотек это свойство инициализируется значением переменной CMAKE_SHARED_LIBRARY_ENABLE_EXPORTS, если она задана при создании цели.
© 2000–2026 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/latest/prop_tgt/ENABLE_EXPORTS.html