file
Команда для работы с файлами.
Эта команда предназначена для работы с файлами и путями, требующей доступа к файловой системе.
Для других операций с путями, обрабатывающих только синтаксические аспекты, см. команду cmake_path().
Примечание
Подкоманды RELATIVE_PATH, TO_CMAKE_PATH и TO_NATIVE_PATH были заменены соответственно подкомандами RELATIVE_PATH, CONVERT ... TO_CMAKE_PATH_LIST и CONVERT ... TO_NATIVE_PATH_LIST команды cmake_path().
Синтаксис
Reading
file(READ <filename> <out-var> [...])
file(STRINGS <filename> <out-var> [...])
file(<HASH> <filename> <out-var>)
file(TIMESTAMP <filename> <out-var> [...])
Writing
file({WRITE | APPEND} <filename> <content>...)
file({TOUCH | TOUCH_NOCREATE} <file>...)
file(GENERATE OUTPUT <output-file> [...])
file(CONFIGURE OUTPUT <output-file> CONTENT <content> [...])
Filesystem
file({GLOB | GLOB_RECURSE} <out-var> [...] <globbing-expr>...)
file(MAKE_DIRECTORY <directories>...)
file({REMOVE | REMOVE_RECURSE } <files>...)
file(RENAME <oldname> <newname> [...])
file(COPY_FILE <oldname> <newname> [...])
file({COPY | INSTALL} <file>... DESTINATION <dir> [...])
file(SIZE <filename> <out-var>)
file(READ_SYMLINK <linkname> <out-var>)
file(CREATE_LINK <original> <linkname> [...])
file(CHMOD <files>... <directories>... PERMISSIONS <permissions>... [...])
file(CHMOD_RECURSE <files>... <directories>... PERMISSIONS <permissions>... [...])
Path Conversion
file(REAL_PATH <path> <out-var> [BASE_DIRECTORY <dir>] [EXPAND_TILDE])
file(RELATIVE_PATH <out-var> <directory> <file>)
file({TO_CMAKE_PATH | TO_NATIVE_PATH} <path> <out-var>)
Transfer
file(DOWNLOAD <url> [<file>] [...])
file(UPLOAD <file> <url> [...])
Locking
file(LOCK <path> [...])
Archiving
file(ARCHIVE_CREATE OUTPUT <archive> PATHS <paths>... [...])
file(ARCHIVE_EXTRACT INPUT <archive> [...])
Handling Runtime Binaries
file(GET_RUNTIME_DEPENDENCIES [...]) Чтение
-
file(READ <filename> <variable> [OFFSET <offset>] [LIMIT <max-in>] [HEX]) -
Чтение содержимого файла под названием
<filename>и сохранение его в<variable>. Допускается чтение с указанного<offset>и ограничение количества считываемых байтов<max-in>. ОпцияHEXпреобразует данные в шестнадцатеричное представление (полезно для бинарных данных). Если задана опцияHEX, символы в выводе (aдоf) будут в нижнем регистре.
-
file(STRINGS <filename> <variable> <options>...) -
Парсинг списка ASCII строк из файла
<filename>и сохранение их в<variable>. Бинарные данные в файле игнорируются. Символы возврата каретки (\r, CR) игнорируются. Доступны следующие опции:-
LENGTH_MAXIMUM <max-len> -
Учитывать только строки длиной не более заданного значения.
-
LENGTH_MINIMUM <min-len> -
Учитывать только строки длиной не менее заданного значения.
-
LIMIT_COUNT <max-num> -
Ограничить количество извлечённых уникальных строк.
-
LIMIT_INPUT <max-in> -
Ограничить количество считываемых байтов из файла.
-
LIMIT_OUTPUT <max-out> -
Ограничить общее количество байтов для хранения в
<variable>. -
NEWLINE_CONSUME -
Обрабатывать символы новой строки (
\n, LF) как часть содержимого строки, а не как разделители. -
NO_HEX_CONVERSION -
Файлы в формате Intel Hex и Motorola S-record автоматически преобразуются в бинарный формат при чтении, если эта опция не указана.
-
REGEX <regex> -
Учитывать только строки, соответствующие заданному регулярному выражению, как описано в string(REGEX).
Изменено в версии 3.29: Группы захвата последнего совпадения в файле сохраняются в
CMAKE_MATCH_<n>, аналогичноstring(REGEX MATCHALL). См. политикуCMP0159. -
ENCODING <encoding-type> -
Добавлена в версии 3.1.
Учитывать строки заданного кодирования. В настоящее время поддерживаются следующие кодировки:
UTF-8,UTF-16LE,UTF-16BE,UTF-32LE,UTF-32BE. Если опцияENCODINGне указана, а файл содержит метку порядка байтов, опцияENCODINGбудет установлена в соответствии с меткой порядка байтов.
Добавлена в версии 3.2: Добавлены кодировки
UTF-16LE,UTF-16BE,UTF-32LE,UTF-32BE.Например, код
file(STRINGS myfile.txt myfile)
сохраняет список в переменной
myfile, где каждый элемент — строка из входного файла. -
-
file(<HASH> <filename> <variable>) -
Вычисление криптографического хэша содержимого файла
<filename>и сохранение его в<variable>. Поддерживаемые алгоритмы хэширования — те, что перечислены командойstring(<HASH>).
-
file(TIMESTAMP <filename> <variable> [<format>] [UTC]) -
Вычисление строкового представления времени изменения файла
<filename>и сохранение его в<variable>. Если время изменения получить не удается, переменная будет установлена в пустую строку ("").См. команду
string(TIMESTAMP)для документации опций<format>иUTC.
Запись
-
file(WRITE <filename> <content>...) -
file(APPEND <filename> <content>...) -
Запись
<content>в файл под названием<filename>. Если файла нет, он будет создан. Если файл существует, режимWRITEперезапишет его, а режимAPPENDдобавит содержимое в конец. Любые не существующие каталоги в пути, указанном в<filename>, будут созданы.Если файл является входными данными для сборки, используйте команду
configure_file()для обновления файла только при изменении его содержимого.
-
file(TOUCH <files>...) -
file(TOUCH_NOCREATE <files>...) -
Добавлена в версии 3.12.
Создание файла без содержимого, если он ещё не существует. Если файл существует, его время доступа и/или изменения будут обновлены до момента вызова функции.
Используйте
TOUCH_NOCREATEдля изменения времени файла, если он существует, но не создается. Если файла нет, это будет проигнорировано.С
TOUCHиTOUCH_NOCREATE, содержимое существующего файла не будет изменено.Изменено в версии 3.30:
<files>может быть пустым списком. В CMake 3.29 и ранее требовался как минимум один файл.
-
file(GENERATE [...]) -
Генерирует выходной файл для каждой конфигурации сборки, поддерживаемой текущим
CMake Generator. Оцениваетgenerator expressionsиз входного содержимого для получения выходного содержимого.file(GENERATE OUTPUT <output-file> <INPUT <input-file>|CONTENT <content>> [CONDITION <expression>] [TARGET <target>] [NO_SOURCE_PERMISSIONS | USE_SOURCE_PERMISSIONS | FILE_PERMISSIONS <permissions>...] [NEWLINE_STYLE [UNIX|DOS|WIN32|LF|CRLF] ])Доступны следующие параметры:
-
CONDITION <condition> -
Сгенерировать выходной файл для конкретной конфигурации только в том случае, если условие истинно. Условие должно быть либо
0, либо1после оценки выражений генератора. -
CONTENT <content> -
Использовать явно заданное входное содержимое.
-
INPUT <input-file> -
Использовать содержимое из указанного файла в качестве входных данных.
Изменено в версии 3.10: Относительный путь рассматривается относительно значения
CMAKE_CURRENT_SOURCE_DIR. См. политикуCMP0070. -
OUTPUT <output-file> -
Указать имя выходного файла для генерации. Используйте выражения генератора, такие как
$<CONFIG>, для указания имени выходного файла, специфичного для конфигурации. Несколько конфигураций могут генерировать один и тот же выходной файл только в случае идентичного генерируемого содержимого. В противном случае,<output-file>должно вычисляться в уникальное имя для каждой конфигурации.Изменено в версии 3.10: Относительный путь (после оценки выражений генератора) рассматривается относительно значения
CMAKE_CURRENT_BINARY_DIR. См. политикуCMP0070. -
TARGET <target> -
Добавлен в версии 3.19.
Указать целевой объект для использования при оценке выражений генератора, требующих целевой объект для оценки (например,
$<COMPILE_FEATURES:...>,$<TARGET_PROPERTY:prop>). -
NO_SOURCE_PERMISSIONS -
Добавлен в версии 3.20.
Права доступа сгенерированного файла по умолчанию установлены в стандартное значение 644 (-rw-r--r--).
-
USE_SOURCE_PERMISSIONS -
Добавлен в версии 3.20.
Перенести права доступа файла
INPUTна сгенерированный файл. Это уже поведение по умолчанию, если ни один из трех параметров прав доступа не задан (NO_SOURCE_PERMISSIONS,USE_SOURCE_PERMISSIONSилиFILE_PERMISSIONS). Ключевое словоUSE_SOURCE_PERMISSIONSв основном служит для более ясного указания целевого поведения в месте вызова. Задание этого параметра безINPUTявляется ошибкой. -
FILE_PERMISSIONS <permissions>... -
Добавлен в версии 3.20.
Использовать заданные права доступа для сгенерированного файла.
-
NEWLINE_STYLE <style> -
Добавлен в версии 3.20.
Указать стиль новой строки для сгенерированного файла. Указать
UNIXилиLFдля\nновой строки, или указатьDOS,WIN32, илиCRLFдля\r\nновой строки.
Должен быть указан ровно один
CONTENTилиINPUTпараметр. Указанный файлOUTPUTможет быть назван не более чем одним вызовомfile(GENERATE). Сгенерированные файлы модифицируются и их метка времени обновляется при последующих запусках cmake только в случае изменения их содержимого.Обратите также внимание, что
file(GENERATE)не создает выходной файл до фазы генерации. Выходной файл еще не будет записан, когда командаfile(GENERATE)вернёт результат; он записывается только после обработки всех файловCMakeLists.txtпроекта. -
-
file(CONFIGURE OUTPUT <output-file> CONTENT <content> [ESCAPE_QUOTES] [@ONLY] [NEWLINE_STYLE [UNIX|DOS|WIN32|LF|CRLF] ]) -
Добавлен в версии 3.18.
Генерирует выходной файл, используя входные данные, заданные
CONTENT, и подставляет значения переменных, указанных как@VAR@или${VAR}в нём. Правила подстановки ведут себя так же, как командаconfigure_file(). Для соответствия поведениюconfigure_file(), выражения генератора не поддерживаются дляOUTPUTиCONTENT, а выходной файл изменяется и его метка времени обновляется только в случае изменения содержимого или если файл ранее не существовал.Аргументы:
-
OUTPUT <output-file> -
Указывает имя выходного файла для генерации. Относительный путь рассматривается относительно значения
CMAKE_CURRENT_BINARY_DIR.<output-file>не поддерживает выражения генератора. -
CONTENT <content> -
Использовать явно заданное входное содержимое.
<content>не поддерживает выражения генератора. -
ESCAPE_QUOTES -
Экранировать любые подставляемые кавычки обратными слешами (в стиле C).
-
@ONLY -
Ограничить замену переменных ссылками в форме
@VAR@. Это полезно для настройки скриптов, использующих синтаксис${VAR}. -
NEWLINE_STYLE <style> -
Указать стиль новой строки для выходного файла. Указать
UNIXилиLFдля\nновых строк, или указатьDOS,WIN32, илиCRLFдля\r\nновых строк.
-
Файловая система
-
file(GLOB <variable> [LIST_DIRECTORIES true|false] [RELATIVE <path>] [CONFIGURE_DEPENDS] <globbing-expressions>...) -
file(GLOB_RECURSE <variable> [FOLLOW_SYMLINKS] [LIST_DIRECTORIES true|false] [RELATIVE <path>] [CONFIGURE_DEPENDS] <globbing-expressions>...) -
Создать список файлов, соответствующих
<globbing-expressions>и сохранить его в<variable>. Выражения для подстановки похожи на регулярные выражения, но намного проще. Если указан флагRELATIVE, результаты будут возвращены в виде относительных путей к заданному пути.Изменено в версии 3.6: Результаты будут отсортированы лексикографически.
В Windows и macOS подстановка является регистронезависимой, даже если основная файловая система регистрозависимая (имена файлов и выражения подстановки приводятся к нижнему регистру перед сопоставлением). В других системах подстановка регистрозависимая.
Добавлена в версии 3.3: По умолчанию
GLOBперечисляет каталоги. Каталоги опускаются в результате, еслиLIST_DIRECTORIESустановлен в false.Добавлена в версии 3.12: Если указан флаг
CONFIGURE_DEPENDS, CMake добавит логику в целевой объект проверки основной системы сборки, чтобы повторно выполнить помеченные командыGLOBво время сборки. Если какие-либо выходные данные изменятся, CMake перегенерирует систему сборки.Примечание
Не рекомендуется использовать GLOB для сбора списка исходных файлов из вашей исходной структуры. Если файл CMakeLists.txt не меняется при добавлении или удалении источника, сгенерированная система сборки не может знать, когда запросить у CMake перегенерацию. Флаг
CONFIGURE_DEPENDSможет работать ненадёжно во всех генераторах или если в будущем будет добавлен новый генератор, который его не поддерживает, проекты, использующие его, окажутся в тупике. Даже еслиCONFIGURE_DEPENDSработает надёжно, всё равно есть затраты на выполнение проверки на каждой пересборке.Примеры выражений для подстановки включают:
*.cxxсопоставить все файлы с расширением
cxx*.vt?сопоставить все файлы с расширением
vta, ...,vtzf[3-5].txtсопоставить файлы
f3.txt,f4.txt,f5.txtРежим
GLOB_RECURSEбудет перебирать все подкаталоги сопоставленного каталога и сопоставлять файлы. Подкаталоги, являющиеся символическими ссылками, перебираются только если указанFOLLOW_SYMLINKSили политикаCMP0009не установлена вNEW.Добавлена в версии 3.3: По умолчанию
GLOB_RECURSEопускает каталоги из списка результатов. УстановкаLIST_DIRECTORIESв true добавляет каталоги в список результатов. Если указанFOLLOW_SYMLINKSили политикаCMP0009не установлена вNEW, тогдаLIST_DIRECTORIESрассматривает символические ссылки как каталоги.Примеры рекурсивной подстановки включают:
/dir/*.pyсопоставить все файлы python в
/dirи подкаталогах
-
file(MAKE_DIRECTORY <directories>... [RESULT <result>]) -
Создать указанные каталоги и их родительские каталоги по мере необходимости.
Варианты:
-
RESULT <result> -
Добавлена в версии 3.31.
Установить переменную
<result>в0при успехе или сообщение об ошибке в противном случае. ЕслиRESULTне указан и операция завершается ошибкой, выводится сообщение об ошибке.
Изменено в версии 3.30:
<directories>может быть пустым списком. CMake 3.29 и более ранние версии требовали указания как минимум одного каталога. -
-
file(REMOVE <files>...) -
file(REMOVE_RECURSE <files>...) -
Удалить указанные файлы. Режим
REMOVE_RECURSEудаляет указанные файлы и каталоги, включая непустые каталоги. Если указанный файл не существует, сообщение об ошибке не выводится. Относительные пути ввода обрабатываются относительно текущего каталога исходных файлов.Изменено в версии 3.15: Пустые пути ввода игнорируются с предупреждением. Предыдущие версии CMake интерпретировали пустые строки как относительный путь к текущему каталогу и удаляли его содержимое.
-
file(RENAME <oldname> <newname> [RESULT <result>] [NO_REPLACE]) -
Переместить файл или каталог внутри файловой системы из
<oldname>в<newname>, атомно заменяя место назначения.Варианты:
-
RESULT <result> -
Добавлена в версии 3.21.
Установить переменную
<result>в0при успехе или сообщение об ошибке в противном случае. ЕслиRESULTне указан и операция завершается ошибкой, выводится сообщение об ошибке. -
NO_REPLACE -
Добавлена в версии 3.21.
Если путь
<newname>уже существует, не заменять его. ЕслиRESULT <result>используется, переменная результата будет установлена вNO_REPLACE. В противном случае выводится сообщение об ошибке.
-
-
file(COPY_FILE <oldname> <newname> [RESULT <result>] [ONLY_IF_DIFFERENT] [INPUT_MAY_BE_RECENT]) -
Добавлена в версии 3.21.
Скопировать файл из
<oldname>в<newname>. Каталоги не поддерживаются. Символические ссылки игнорируются и содержимое<oldfile>читается и записывается в<newname>как новый файл.Варианты:
-
RESULT <result> -
Установить переменную
<result>в0при успехе или сообщение об ошибке в противном случае. ЕслиRESULTне указан и операция завершается ошибкой, выводится сообщение об ошибке. -
ONLY_IF_DIFFERENT -
Если путь
<newname>уже существует, не заменять его, если содержимое файла уже такое же, как в<oldname>(это позволяет избежать обновления метки времени<newname>). -
INPUT_MAY_BE_RECENT -
Добавлена в версии 3.26.
Указать CMake, что входной файл мог быть недавно создан. Это имеет значение только в Windows, где файлы могут быть недоступны в течение короткого времени после создания. С этим параметром, если доступ запрещён, CMake будет повторно пытаться прочитать входные данные несколько раз.
Эта подкоманда имеет некоторые сходства с
configure_file()с опциейCOPYONLY. Важное отличие заключается в том, чтоconfigure_file()создаёт зависимость от исходного файла, поэтому CMake будет повторно выполняться, если он изменится. Подкомандаfile(COPY_FILE)не создаёт такой зависимости.См. также подкоманду
file(COPY)чуть ниже, которая предоставляет дополнительные возможности копирования файлов. -
-
file(COPY [...]) -
file(INSTALL [...]) -
Подпись
COPYкопирует файлы, директории и символические ссылки в целевую папку. Относительные пути входных данных оцениваются относительно текущей исходной директории, а относительный путь назначения — относительно текущей директории сборки. Копирование сохраняет временные метки входных файлов и исключает файл, если он существует в пункте назначения с той же временной меткой. Копирование сохраняет разрешения на входные файлы, за исключением явных разрешений илиNO_SOURCE_PERMISSIONS(по умолчаниюUSE_SOURCE_PERMISSIONS).file(<COPY|INSTALL> <files>... DESTINATION <dir> [NO_SOURCE_PERMISSIONS | USE_SOURCE_PERMISSIONS] [FILE_PERMISSIONS <permissions>...] [DIRECTORY_PERMISSIONS <permissions>...] [FOLLOW_SYMLINK_CHAIN] [FILES_MATCHING] [[PATTERN <pattern> | REGEX <regex>] [EXCLUDE] [PERMISSIONS <permissions>...]] [...])Примечание
Для простой операции копирования файлов подкоманда
file(COPY_FILE)выше может быть легче в использовании.Добавлен в версии 3.15: Если
FOLLOW_SYMLINK_CHAINуказан,COPYбудет рекурсивно разрешать символические ссылки по заданным путям до тех пор, пока не будет найден реальный файл, и устанавливать соответствующую символическую ссылку в пункт назначения для каждой встреченной символической ссылки. Для каждой установленной символической ссылки разрешение очищается от директории, оставляя только имя файла, что означает, что новая символическая ссылка указывает на файл в той же директории, что и символическая ссылка. Эта функция полезна на некоторых Unix-системах, где библиотеки устанавливаются как цепочка символических ссылок с номерами версий, при этом менее конкретные версии указывают на более конкретные версии.FOLLOW_SYMLINK_CHAINустановит все эти символические ссылки и саму библиотеку в целевую директорию. Например, если у вас следующая структура директорий:/opt/foo/lib/libfoo.so.1.2.3/opt/foo/lib/libfoo.so.1.2 -> libfoo.so.1.2.3/opt/foo/lib/libfoo.so.1 -> libfoo.so.1.2/opt/foo/lib/libfoo.so -> libfoo.so.1
и вы сделаете:
file(COPY /opt/foo/lib/libfoo.so DESTINATION lib FOLLOW_SYMLINK_CHAIN)
Это установит все символические ссылки и
libfoo.so.1.2.3вlib.См. команду
install(DIRECTORY)для документации по разрешениям,FILES_MATCHING,PATTERN,REGEX, иEXCLUDEпараметрам. Копирование директорий сохраняет структуру их содержимого даже при использовании параметров для выбора подмножества файлов.Подпись
INSTALLнемного отличается отCOPY: она печатает сообщения об этапах выполнения, иNO_SOURCE_PERMISSIONSпо умолчанию. Сценарии установки, сгенерированные командойinstall(), используют эту подпись (с некоторыми неудокументированными параметрами для внутреннего использования).Изменено в версии 3.22: Переменная среды
CMAKE_INSTALL_MODEможет переопределить поведение копирования по умолчанию командыfile(INSTALL).
-
file(SIZE <filename> <variable>) -
Добавлен в версии 3.14.
Определить размер файла
<filename>и поместить результат в переменную<variable>. Требуется, чтобы<filename>был допустимым путем к файлу и был доступен для чтения.
-
file(READ_SYMLINK <linkname> <variable>) -
Добавлен в версии 3.14.
Запрос символической ссылки
<linkname>и сохранение пути, на который она указывает, в результате<variable>. Если<linkname>не существует или не является символической ссылкой, CMake выдаст ошибку.Обратите внимание, что эта команда возвращает исходный путь символической ссылки и не разрешает относительный путь. Следующий пример демонстрирует, как получить абсолютный путь:
set(linkname "/path/to/foo.sym") file(READ_SYMLINK "${linkname}" result) if(NOT IS_ABSOLUTE "${result}") get_filename_component(dir "${linkname}" DIRECTORY) set(result "${dir}/${result}") endif()
-
file(CREATE_LINK <original> <linkname> [RESULT <result>] [COPY_ON_ERROR] [SYMBOLIC]) -
Добавлен в версии 3.14.
Создать ссылку
<linkname>, которая указывает на<original>. По умолчанию это жёсткая ссылка, но использование параметраSYMBOLICприводит к символической ссылке вместо этого. Жёсткие ссылки требуют, чтобыoriginalсуществовал и был файлом, а не директорией. Если<linkname>уже существует, он будет перезаписан.Переменная
<result>, если задана, получает результат операции. Она устанавливается в0при успехе или сообщение об ошибке в противном случае. ЕслиRESULTне указан и операция завершается неудачей, генерируется ошибка.Указание
COPY_ON_ERRORпозволяет скопировать файл в качестве резервного варианта, если создание ссылки завершится неудачей. Это может быть полезно для обработки ситуаций, таких как<original>и<linkname>находятся на разных дисках или точках монтирования, которые не смогут поддерживать жёсткую ссылку.
-
file(CHMOD <files>... <directories>... [PERMISSIONS <permissions>...] [FILE_PERMISSIONS <permissions>...] [DIRECTORY_PERMISSIONS <permissions>...]) -
Добавлен в версии 3.19.
Установить разрешения для
<files>...и<directories>..., указанных в параметрах. Допустимые разрешенияOWNER_READ,OWNER_WRITE,OWNER_EXECUTE,GROUP_READ,GROUP_WRITE,GROUP_EXECUTE,WORLD_READ,WORLD_WRITE,WORLD_EXECUTE,SETUID,SETGID.Допустимые сочетания ключевых слов:
-
PERMISSIONS -
Все элементы изменяются.
-
FILE_PERMISSIONS -
Изменяются только файлы.
-
DIRECTORY_PERMISSIONS -
Изменяются только директории.
-
PERMISSIONS and FILE_PERMISSIONS -
FILE_PERMISSIONSпереопределяетPERMISSIONSдля файлов. -
PERMISSIONS and DIRECTORY_PERMISSIONS -
DIRECTORY_PERMISSIONSпереопределяетPERMISSIONSдля директорий. -
FILE_PERMISSIONS and DIRECTORY_PERMISSIONS -
Используйте
FILE_PERMISSIONSдля файлов иDIRECTORY_PERMISSIONSдля директорий.
-
-
file(CHMOD_RECURSE <files>... <directories>... [PERMISSIONS <permissions>...] [FILE_PERMISSIONS <permissions>...] [DIRECTORY_PERMISSIONS <permissions>...]) -
Добавлен в версии 3.19.
Аналогично
CHMOD, но изменяет разрешения файлов и директорий, присутствующих в<directories>...рекурсивно.
Преобразование путей
-
file(REAL_PATH <path> <out-var> [BASE_DIRECTORY <dir>] [EXPAND_TILDE]) -
Добавлен в версии 3.19.
Вычисление абсолютного пути к существующему файлу или директории с разрешением символических ссылок. Параметры:
-
BASE_DIRECTORY <dir> -
Если предоставленный
<path>является относительным путем, он оценивается относительно заданной базовой директории<dir>. Если базовая директория не указана, по умолчанию будет использоватьсяCMAKE_CURRENT_SOURCE_DIR. -
EXPAND_TILDE -
Добавлен в версии 3.21.
Если
<path>является~или начинается с~/,~заменяется домашним каталогом пользователя. Путь к домашнему каталогу извлекается из переменных среды. В Windows используется переменная средыUSERPROFILE, по умолчанию используется переменнаяHOME, еслиUSERPROFILEне определена. На всех остальных платформах используется толькоHOME.
Изменено в версии 3.28: Все символические ссылки разрешаются перед слиянием
../компонентов. См. политикуCMP0152. -
-
file(RELATIVE_PATH <variable> <directory> <file>) -
Вычисление относительного пути от
<directory>к<file>и сохранение его в<variable>.
-
file(TO_CMAKE_PATH "<path>" <variable>) -
file(TO_NATIVE_PATH "<path>" <variable>) -
Режим
TO_CMAKE_PATHпреобразует строку с именем файла, используемую в операционной системе (<path>), в путь в стиле CMake с прямыми косыми чертами (/). Входными данными может быть один путь или путь поиска системы, как, например,$ENV{PATH}. Путь поиска будет преобразован в список CMake, разделенный символами;.Режим
TO_NATIVE_PATHпреобразует путь в стиле CMake (<path>) в системный путь с символами, специфичными для платформы (\на Windows-системах и/в противном случае).Всегда используйте двойные кавычки вокруг
<path>, чтобы убедиться, что он обрабатывается как один аргумент для этой команды.
Передача
-
file(DOWNLOAD <url> [<file>] <options>...) -
file(UPLOAD <file> <url> <options>...) -
Подкоманда
DOWNLOADзагружает указанный<url>в локальную<file>. ПодкомандаUPLOADзагружает локальный<file>в заданный<url>.Добавлена в версии 3.19: Если
<file>не указан дляfile(DOWNLOAD), файл не сохраняется. Это может быть полезно, если вы хотите узнать, можно ли загрузить файл (например, чтобы проверить, существует ли он), не сохраняя его нигде.Параметры для
DOWNLOADиUPLOAD:-
INACTIVITY_TIMEOUT <seconds> -
Прекратить операцию после периода бездействия.
-
LOG <variable> -
Сохранить удобочитаемый журнал операции в переменную.
-
SHOW_PROGRESS -
Выводить информацию о прогрессе в виде сообщений состояния до завершения операции.
-
STATUS <variable> -
Сохранить результирующий статус операции в переменную. Статус — список длиной 2, разделённый
;. Первый элемент — числовое возвращаемое значение операции, второй — строковое значение ошибки. Числовое значение ошибки0означает отсутствие ошибки в операции. -
TIMEOUT <seconds> -
Прекратить операцию после истечения заданного общего времени.
-
USERPWD <username>:<password> -
Добавлена в версии 3.7.
Установить имя пользователя и пароль для операции.
-
HTTPHEADER <HTTP-header> -
Добавлена в версии 3.7.
HTTP-заголовок для операций
DOWNLOADиUPLOAD.HTTPHEADERможет быть повторено для нескольких параметров:file(DOWNLOAD <url> HTTPHEADER "Authorization: Bearer <auth-token>" HTTPHEADER "UserAgent: Mozilla/5.0") -
NETRC <level> -
Добавлена в версии 3.11.
Указать, должен ли использоваться файл .netrc для операции. Если этот параметр не указан, будет использоваться значение переменной
CMAKE_NETRC.Допустимые значения:
-
IGNORED -
Файл .netrc игнорируется. Это значение по умолчанию.
-
OPTIONAL -
Файл .netrc необязателен, и информация из URL имеет приоритет. Файл будет прочитан для поиска информации, которая не указана в URL.
-
REQUIRED -
Файл .netrc необходим, и информация из URL игнорируется.
-
-
NETRC_FILE <file> -
Добавлена в версии 3.11.
Указать альтернативный файл .netrc по отношению к файлу в вашем домашнем каталоге, если уровень
NETRCравенOPTIONALилиREQUIRED. Если этот параметр не указан, будет использоваться значение переменнойCMAKE_NETRC_FILE. -
TLS_VERSION <min> -
Добавлена в версии 3.30.
Указать минимальную версию TLS для
https://URL. Если этот параметр не указан, будет использоваться значение переменнойCMAKE_TLS_VERSIONили переменной средыCMAKE_TLS_VERSION. Допустимые значения см. вCMAKE_TLS_VERSION.Изменено в версии 3.31: Значение по умолчанию — TLS 1.2. Раньше минимальная версия по умолчанию не применялась.
-
TLS_VERIFY <ON|OFF> -
Указать, нужно ли проверять сертификат сервера для
https://URL. Если этот параметр не указан, будет использоваться значение переменнойCMAKE_TLS_VERIFYили переменной средыCMAKE_TLS_VERIFY. Если ни то ни другое не установлено, значение по умолчанию — включено.Изменено в версии 3.31: Значение по умолчанию — включено. Раньше значение по умолчанию было выключено. Пользователи могут установить переменную среды
CMAKE_TLS_VERIFYв0для восстановления старого значения по умолчанию.Добавлена в версии 3.18: Добавлена поддержка
file(UPLOAD). -
TLS_CAINFO <file> -
Указать файл пользовательского центра сертификации для
https://URL. Если этот параметр не указан, будет использоваться значение переменнойCMAKE_TLS_CAINFO.Добавлена в версии 3.18: Добавлена поддержка
file(UPLOAD).
Для
https://URL CMake должен быть скомпилирован с поддержкой SSL/TLS.Дополнительные параметры для
DOWNLOAD:-
EXPECTED_HASH <algorithm>=<value> -
Проверить, соответствует ли хэш загруженного содержимого ожидаемому значению, где
<algorithm>— один из алгоритмов, поддерживаемых<HASH>. Если файл уже существует и соответствует хэшу, загрузка пропускается. Если файл уже существует и не соответствует хэшу, файл загружается заново. Если после загрузки файл не соответствует хэшу, операция завершается с ошибкой. Указание этого параметра при отсутствииDOWNLOADс<file>является ошибкой. -
EXPECTED_MD5 <value> -
Исторический сокращённый вариант
EXPECTED_HASH MD5=<value>. Указание этого параметра при отсутствииDOWNLOADс<file>является ошибкой. -
RANGE_START <value> -
Добавлена в версии 3.24.
Смещение начала диапазона в файле в байтах. Можно опустить, чтобы загрузить всё до указанного
RANGE_END. -
RANGE_END <value> -
Добавлена в версии 3.24.
Смещение конца диапазона в файле в байтах. Можно опустить, чтобы загрузить всё от указанного
RANGE_STARTдо конца файла.
-
Замки
-
file(LOCK <path> [DIRECTORY] [RELEASE] [GUARD <FUNCTION|FILE|PROCESS>] [RESULT_VARIABLE <variable>] [TIMEOUT <seconds>]) -
Добавлена в версии 3.2.
Заблокировать файл, указанный в
<path>, если параметрDIRECTORYне задан, и файл<path>/cmake.lockв противном случае. Файл будет заблокирован на срок, определённый параметромGUARD(значение по умолчанию —PROCESS). ПараметрRELEASEможет быть использован для явного разблокирования файла. Если параметрTIMEOUTне указан, CMake будет ждать, пока блокировка не произойдёт или не произойдёт фатальная ошибка. ЕслиTIMEOUTустановлено в0, блокировка будет опробована один раз, а результат будет сообщён немедленно. ЕслиTIMEOUTне равно0, CMake будет пытаться заблокировать файл в течение периода, указанного вTIMEOUT <seconds>. Любые ошибки будут интерпретироваться как фатальные, если нет параметраRESULT_VARIABLE. В противном случае результат будет сохранён в<variable>и будет0при успехе или сообщение об ошибке при неудаче.Обратите внимание, что блокировка является рекомендательной; нет гарантии, что другие процессы будут учитывать эту блокировку, т.е. блокировка не синхронизирует два или более экземпляров CMake, которые совместно используют какие-либо изменяемые ресурсы. Аналогичная логика применима к параметру
DIRECTORY; блокировка родительского каталога не предотвращает блокировку других командLOCKлюбого дочернего каталога или файла.Повторная попытка блокировки одного и того же файла запрещена. Любые промежуточные каталоги и сам файл будут созданы, если они не существуют. Параметры
GUARDиTIMEOUTигнорируются при операцииRELEASE.
Архивирование
-
file(ARCHIVE_CREATE OUTPUT <archive> PATHS <paths>... [FORMAT <format>] [COMPRESSION <compression> [COMPRESSION_LEVEL <compression-level>]] [MTIME <mtime>] [WORKING_DIRECTORY <dir>] [VERBOSE]) -
Добавлен в версии 3.18.
Создаёт указанный
<archive>файл с файлами и каталогами, перечисленными в<paths>. Обратите внимание, что<paths>должен содержать фактические файлы или каталоги; подстановки не поддерживаются.Доступны следующие опции:
-
FORMAT <format> -
Указывает формат архива. Поддерживаемые значения для
<format>—7zip,gnutar,pax,paxr,rawиzip. ЕслиFORMATне указано, используется формат по умолчанию —paxr. -
COMPRESSION <compression> -
Некоторые форматы архивов позволяют указать тип сжатия. Форматы архивов
7zipиzipуже подразумевают определённый тип сжатия. Другие форматы по умолчанию не используют сжатие, но могут быть настроены на него с помощью опцииCOMPRESSION. Допустимые значения для<compression>—None,BZip2,GZip,XZ, иZstd.Примечание
При установке
FORMATв значениеrawтолько один файл будет сжат с использованием типа сжатия, указанного вCOMPRESSION. -
COMPRESSION_LEVEL <compression-level> -
Добавлен в версии 3.19.
Уровень сжатия можно указать с помощью опции
COMPRESSION_LEVEL. Значение<compression-level>должно находиться в диапазоне от 0 до 9, по умолчанию — 0. ОпцияCOMPRESSIONдолжна быть присутствовать при указанииCOMPRESSION_LEVEL.Добавлен в версии 3.26: Значение
<compression-level>алгоритмаZstdможет быть установлено в диапазоне от 0 до 19. -
MTIME <mtime> -
Указывает время изменения, записываемое в записи tarball.
-
WORKING_DIRECTORY <dir> -
Добавлен в версии 3.31.
Указывает каталог, в котором будет выполняться операция создания архива. Пути в аргументе
<paths>могут быть относительными к этому каталогу. Если эта опция не указана, по умолчанию используется текущий рабочий каталог. -
VERBOSE -
Включает подробный вывод при операции с архивом.
-
-
file(ARCHIVE_EXTRACT INPUT <archive> [DESTINATION <dir>] [PATTERNS <pattern>...] [LIST_ONLY] [VERBOSE] [TOUCH]) -
Добавлен в версии 3.18.
Извлекает или отображает содержимое указанного
<archive>.Доступные опции:
-
DESTINATION <dir> -
Указывает каталог, в который будет извлечено содержимое архива. Если каталог не существует, он будет создан. Если
DESTINATIONне указан, используется текущий каталог бинарных файлов. -
PATTERNS <pattern>... -
Извлекать/отображать только файлы и каталоги, соответствующие одному из заданных шаблонов. Поддерживаются подстановки. Если опция
PATTERNSне указана, будет отображён или извлечён весь архив. -
LIST_ONLY -
Отобразить содержимое архива, а не извлечь его.
-
TOUCH -
Добавлен в версии 3.24.
Присвоить извлечённым файлам текущее локальное время вместо извлечения времени создания файлов из архива.
-
VERBOSE -
Включить подробный вывод при операции извлечения.
Примечание
Рабочий каталог для этой подкоманды — каталог
DESTINATION(указанный или вычисленный), за исключением случаев, когда указана опцияLIST_ONLY. Поэтому, за пределами режима скриптов, предпочтительнее указывать абсолютные пути к архивамINPUT, так как извлечение по относительному пути может оказаться непредсказуемым. -
Обработка бинарных файлов во время выполнения
-
file(GET_RUNTIME_DEPENDENCIES [...]) -
Добавлен в версии 3.16.
Рекурсивно получить список библиотек, от которых зависят заданные файлы:
file(GET_RUNTIME_DEPENDENCIES [RESOLVED_DEPENDENCIES_VAR <deps_var>] [UNRESOLVED_DEPENDENCIES_VAR <unresolved_deps_var>] [CONFLICTING_DEPENDENCIES_PREFIX <conflicting_deps_prefix>] [EXECUTABLES <executable_files>...] [LIBRARIES <library_files>...] [MODULES <module_files>...] [DIRECTORIES <directories>...] [BUNDLE_EXECUTABLE <bundle_executable_file>] [PRE_INCLUDE_REGEXES <regexes>...] [PRE_EXCLUDE_REGEXES <regexes>...] [POST_INCLUDE_REGEXES <regexes>...] [POST_EXCLUDE_REGEXES <regexes>...] [POST_INCLUDE_FILES <files>...] [POST_EXCLUDE_FILES <files>...] )
Обратите внимание, что эта подкоманда не предназначена для использования в режиме проекта. Она предназначена для использования во время установки, либо из кода, сгенерированного командой
install(RUNTIME_DEPENDENCY_SET), либо из кода, предоставленного проектом черезinstall(CODE)илиinstall(SCRIPT). Например:install(CODE [[ file(GET_RUNTIME_DEPENDENCIES # ... ) ]])Аргументы следующие:
-
RESOLVED_DEPENDENCIES_VAR <deps_var> -
Имя переменной, в которой будет храниться список разрешённых зависимостей.
-
UNRESOLVED_DEPENDENCIES_VAR <unresolved_deps_var> -
Имя переменной, в которой будет храниться список неразрешённых зависимостей. Если эта переменная не указана и существуют неразрешённые зависимости, выдаётся ошибка.
-
CONFLICTING_DEPENDENCIES_PREFIX <conflicting_deps_prefix> -
Префикс переменной, в которой будет храниться информация о конфликтующих зависимостях. Зависимости конфликтуют, если два файла с одинаковым именем найдены в двух разных каталогах. Список имён файлов, которые конфликтуют, хранится в
<conflicting_deps_prefix>_FILENAMES. Для каждого имени файла список путей, которые были найдены для этого имени файла, хранится в<conflicting_deps_prefix>_<filename>. -
EXECUTABLES <executable_files>... -
Список исполняемых файлов для чтения зависимостей. Это исполняемые файлы, которые обычно создаются с помощью
add_executable(), но они не обязаны создаваться CMake. На платформах Apple пути к этим файлам определяют значение@executable_pathпри рекурсивном разрешении библиотек. Указание любого типа библиотек (STATIC,MODULE, илиSHARED) здесь приведёт к неопределённому поведению. -
LIBRARIES <library_files>... -
Список файлов библиотек для чтения зависимостей. Это библиотеки, которые обычно создаются с помощью
add_library(SHARED), но они не обязаны создаваться CMake. Указание библиотекSTATIC, библиотекMODULEили исполняемых файлов здесь приведёт к неопределённому поведению. -
MODULES <module_files>... -
Список файлов загружаемых модулей для чтения зависимостей. Это модули, которые обычно создаются с помощью
add_library(MODULE), но они не обязаны создаваться CMake. Они обычно используются путём вызоваdlopen()во время выполнения, а не подключаются на этапе линковки сld -l. Указание библиотекSTATIC, библиотекSHAREDили исполняемых файлов здесь приведёт к неопределённому поведению. -
DIRECTORIES <directories>... -
Список дополнительных каталогов для поиска зависимостей. На платформах Linux эти каталоги проверяются, если зависимость не найдена ни в одном из других обычных путей. Если она найдена в таком каталоге, выдаётся предупреждение, так как это означает, что файл неполный (он не перечисляет все каталоги, содержащие его зависимости). На платформах Windows эти каталоги проверяются, если зависимость не найдена ни в одном из других путей поиска, но предупреждение не выдаётся, так как поиск в других путях является нормальной частью разрешения зависимостей в Windows. На платформах Apple этот аргумент не оказывает никакого влияния.
-
BUNDLE_EXECUTABLE <bundle_executable_file> -
Исполняемый файл, который нужно рассматривать как "исполняемый файл пакета" при разрешении библиотек. На платформах Apple этот аргумент определяет значение
@executable_pathпри рекурсивном разрешении библиотек для файловLIBRARIESиMODULES. Он не оказывает никакого влияния на файлыEXECUTABLES. На других платформах он не оказывает никакого влияния. Это обычно (но не всегда) один из исполняемых файлов в аргументеEXECUTABLES, который обозначает "главный" исполняемый файл пакета.
Следующие аргументы задают фильтры для включения или исключения библиотек, которые нужно разрешить. Более подробное описание того, как они работают, приведено ниже.
-
PRE_INCLUDE_REGEXES <regexes>... -
Список регулярных выражений предварительного включения, используемых для фильтрации имён ещё не разрешённых зависимостей.
-
PRE_EXCLUDE_REGEXES <regexes>... -
Список регулярных выражений предварительного исключения, используемых для фильтрации имён ещё не разрешённых зависимостей.
-
POST_INCLUDE_REGEXES <regexes>... -
Список регулярных выражений пост-включения, используемых для фильтрации имён разрешённых зависимостей.
-
POST_EXCLUDE_REGEXES <regexes>... -
Список регулярных выражений пост-исключения, используемых для фильтрации имён разрешённых зависимостей.
-
POST_INCLUDE_FILES <files>... -
Добавлен в версии 3.21.
Список имён файлов пост-включения, используемых для фильтрации имён разрешённых зависимостей. Символические ссылки разрешаются при попытке сопоставить эти имена файлов.
-
POST_EXCLUDE_FILES <files>... -
Добавлен в версии 3.21.
Список имён файлов пост-исключения, используемых для фильтрации имён разрешённых зависимостей. Символические ссылки разрешаются при попытке сопоставить эти имена файлов.
Эти аргументы могут быть использованы для исключения нежелательных системных библиотек при разрешении зависимостей или для включения библиотек из определённого каталога. Фильтрация работает следующим образом:
- Если неразрешённая зависимость соответствует одному из
PRE_INCLUDE_REGEXES, шаги 2 и 3 пропускаются, и разрешение зависимости переходит к шагу 4. - Если неразрешённая зависимость соответствует одному из
PRE_EXCLUDE_REGEXES, разрешение зависимости останавливается для этой зависимости. - В противном случае разрешение зависимости продолжается.
-
file(GET_RUNTIME_DEPENDENCIES)ищет зависимость в соответствии с правилами линковки платформы (см. ниже). - Если зависимость найдена, и её полный путь соответствует одному из
POST_INCLUDE_REGEXESилиPOST_INCLUDE_FILES, полный путь добавляется к разрешённым зависимостям, иfile(GET_RUNTIME_DEPENDENCIES)рекурсивно разрешает зависимости этой библиотеки. В противном случае разрешение переходит к шагу 6. - Если зависимость найдена, но её полный путь соответствует одному из
POST_EXCLUDE_REGEXESилиPOST_EXCLUDE_FILES, она не добавляется к разрешённым зависимостям, и разрешение зависимости останавливается для этой зависимости. - Если зависимость найдена, и её полный путь не соответствует ни
POST_INCLUDE_REGEXES, ниPOST_INCLUDE_FILES, ниPOST_EXCLUDE_REGEXES, ниPOST_EXCLUDE_FILES, полный путь добавляется к разрешённым зависимостям, иfile(GET_RUNTIME_DEPENDENCIES)рекурсивно разрешает зависимости этой библиотеки.
Разные платформы имеют разные правила разрешения зависимостей. Эти особенности описаны здесь.
На платформах Linux разрешение библиотек работает следующим образом:
- Если у зависящего файла нет
RUNPATHзаписей, и библиотека существует в одном изRPATHзаписей зависящего файла или его предков, в указанном порядке, зависимость разрешается к этому файлу. - В противном случае, если у зависящего файла есть
RUNPATHзаписи, и библиотека существует в одной из них, зависимость разрешается к этому файлу. - В противном случае, если библиотека существует в одном из каталогов, перечисленных в
ldconfig, зависимость разрешается к этому файлу. - В противном случае, если библиотека существует в одной из
DIRECTORIESзаписей, зависимость разрешается к этому файлу. В этом случае выдаётся предупреждение, так как нахождение файла в одном изDIRECTORIESозначает, что зависящий файл неполный (он не перечисляет все каталоги, из которых он получает зависимости). - В противном случае зависимость не разрешена.
Изменено в версии 3.31: Разрешение каждого встреченного имени файла библиотеки происходит не более одного раза во время обработки данного корневого ELF-файла (исполняемого файла или разделяемого объекта). Если имя файла библиотеки встречается снова в дереве зависимостей, предполагается исходное разрешение. Это поведение более точно соответствует поведению динамического загрузчика на Linux.
На платформах Windows разрешение библиотек работает следующим образом:
-
Имена зависимостей DLL преобразуются в нижний регистр для соответствия фильтрам. Имена Windows DLL нечувствительны к регистру, а некоторые линковщики изменяют регистр имён зависимостей DLL. Однако это затрудняет
PRE_INCLUDE_REGEXES,PRE_EXCLUDE_REGEXES,POST_INCLUDE_REGEXES, иPOST_EXCLUDE_REGEXESправильно фильтровать имена DLL - каждое регулярное выражение должно проверять как верхний, так и нижний регистр. Например:file(GET_RUNTIME_DEPENDENCIES # ... PRE_INCLUDE_REGEXES "^[Mm][Yy][Ll][Ii][Bb][Rr][Aa][Rr][Yy]\\.[Dd][Ll][Ll]$" )
Преобразование имени DLL в нижний регистр позволяет регулярным выражениям соответствовать только именам в нижнем регистре, упрощая регулярное выражение. Например:
file(GET_RUNTIME_DEPENDENCIES # ... PRE_INCLUDE_REGEXES "^mylibrary\\.dll$" )
Это регулярное выражение будет соответствовать
mylibrary.dllнезависимо от регистра, как на диске, так и в зависящем файле. (Например, оно будет соответствоватьmylibrary.dll,MyLibrary.dll, иMYLIBRARY.DLL.)Изменено в версии 3.27: Преобразование в нижний регистр применяется только при сопоставлении фильтров. Результаты, отчёт о которых идёт после фильтрации, сохраняют регистр каждого имени DLL, как оно найдено на диске, если разрешено, и в противном случае, как оно указано в зависимом двоичном файле.
До CMake 3.27 результаты сообщались с именами DLL в нижнем регистре, но часть каталога сохраняла свой регистр.
- (Ещё не реализовано) Если зависящий файл является приложением Windows Store, и зависимость указана как зависимость в манифесте пакета приложения, зависимость разрешается к этому файлу.
- В противном случае, если библиотека существует в том же каталоге, что и зависящий файл, зависимость разрешается к этому файлу.
- В противном случае, если библиотека существует в каталоге операционной системы
system32или каталогеWindows, в указанном порядке, зависимость разрешается к этому файлу. - В противном случае, если библиотека существует в одном из каталогов, указанных в
DIRECTORIES, в том порядке, в котором они указаны, зависимость разрешается к этому файлу. В этом случае предупреждение не выдаётся, так как поиск в других каталогах является нормальной частью разрешения библиотек в Windows. - В противном случае зависимость не разрешена.
На платформах Apple разрешение библиотек работает следующим образом:
-
- Если зависимость начинается с
@executable_path/, и аргументEXECUTABLESв процессе разрешения, а замена@executable_path/на директорию исполняемого файла приводит к существующему файлу, зависимость разрешается к этому файлу. - В противном случае, если зависимость начинается с
@executable_path/, и есть аргументBUNDLE_EXECUTABLE, а замена@executable_path/на директорию исполняемого файла пакета приводит к существующему файлу, зависимость разрешается к этому файлу. - В противном случае, если зависимость начинается с
@loader_path/, а замена@loader_path/на директорию зависимого файла приводит к существующему файлу, зависимость разрешается к этому файлу. - В противном случае, если зависимость начинается с
@rpath/, а замена@rpath/на один из элементовRPATHзависимого файла приводит к существующему файлу, зависимость разрешается к этому файлу. Обратите внимание, что элементыRPATH, начинающиеся с@executable_path/или@loader_path/, также заменяются соответствующим путем. - В противном случае, если зависимость является абсолютным файлом, который существует, зависимость разрешается к этому файлу.
- В противном случае, зависимость не разрешена.
Эта функция принимает несколько переменных, определяющих инструмент, используемый для разрешения зависимостей:
-
CMAKE_GET_RUNTIME_DEPENDENCIES_PLATFORM -
Определяет операционную систему и формат исполняемого файла, для которого строятся файлы. Это может быть одно из нескольких значений:
linux+elfwindows+pemacos+macho
Если эта переменная не указана, она определяется автоматически с помощью интроспекции системы.
-
CMAKE_GET_RUNTIME_DEPENDENCIES_TOOL -
Определяет инструмент для использования при разрешении зависимостей. Он может иметь одно из нескольких значений, в зависимости от значения
CMAKE_GET_RUNTIME_DEPENDENCIES_PLATFORM:CMAKE_GET_RUNTIME_DEPENDENCIES_PLATFORMCMAKE_GET_RUNTIME_DEPENDENCIES_TOOLlinux+elfobjdumpwindows+peobjdumpилиdumpbinmacos+machootoolЕсли эта переменная не указана, она определяется автоматически с помощью интроспекции системы.
-
CMAKE_GET_RUNTIME_DEPENDENCIES_COMMAND -
Определяет путь к инструменту, используемому для разрешения зависимостей. Это фактический путь к
objdump,dumpbin, илиotool.Если эта переменная не указана, она определяется значением
CMAKE_OBJDUMPесли оно установлено, в противном случае - с помощью интроспекции системы.Добавлена в версии 3.18: Использовать
CMAKE_OBJDUMPесли установлено.
- Если зависимость начинается с
© 2000–2024 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/latest/command/file.html