ENABLE_EXPORTS
Укажите, экспортирует ли исполняемый файл символы для загружаемых модулей.
Обычно исполняемый файл не экспортирует какие-либо символы, поскольку он является конечной программой. Исполняемый файл может экспортировать символы, которые будут использоваться загружаемыми модулями. При установке этого свойства в значение true CMake позволит другим целевым объектам «связывать» исполняемый файл с помощью команды target_link_libraries(). На всех платформах для целевых объектов, которые связываются с исполняемым файлом, создаётся зависимость уровня целевого объекта от исполняемого файла. Обработка исполняемого файла в строках связывания загружаемых модулей зависит от платформы:
- В системах на основе Windows (включая Cygwin) вместе с исполняемым файлом создаётся «библиотека импорта», в которой перечислены экспортированные символы. Загружаемые модули связываются с библиотекой импорта, чтобы получить символы.
- В macOS загружаемые модули связываются с самим исполняемым файлом, используя флаг
-bundle_loader. - В AIX вместе с исполняемым файлом создаётся «файл импорта» компоновщика, в котором перечислены экспортированные символы для импорта при связывании других целевых объектов. Загружаемые модули связываются с файлом импорта, чтобы получить символы.
- На других платформах загружаемые модули просто связываются без ссылки на исполняемый файл, так как динамический загрузчик автоматически свяжет символы при загрузке модуля.
Это свойство инициализируется значением переменной CMAKE_ENABLE_EXPORTS, если она задана при создании целевого объекта.
© 2000–2021 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.22/prop_tgt/ENABLE_EXPORTS.html