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