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: На платформах 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–2024 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.27/prop_tgt/ENABLE_EXPORTS.html