Подтвердить что ты не робот

Что означает опция -H.` для CMake?

Этот ответ на прежний вопрос о CMake показывает эту командную строку:

cmake -H. -Bbuild -G "MSYS Makefiles"

Какую задачу выполняет здесь функция -H.? cmake --help говорит, что -H печатает справку...

Я использую CMake 3.2.3.

4b9b3361

Ответ 1

Как упоминалось в связанном ответе, это недокументированный вариант, но просмотр исходного кода показывает его эффект:

В cmake::SetArgs():

if(arg.find("-H",0) == 0)
  {    
  directoriesSet = true;
  std::string path = arg.substr(2);
  path = cmSystemTools::CollapseFullPath(path);
  cmSystemTools::ConvertToUnixSlashes(path);
  this->SetHomeDirectory(path);

Последний вызов SetHomeDirectory фактически устанавливает исходный каталог для проекта. Опция -B (также недокументированная), в свою очередь, устанавливает двоичный каталог.

Если эти параметры не установлены, двоичный каталог будет текущей папкой, в которой выполняется cmake, и исходный каталог может быть задан как позиционный аргумент (если не найден, исходная папка также будет текущей рабочей папкой).

Ответ 2

Руководство по автостопу по CMake объясняет как устаревшие, так и новые возможности CMake 3.13:

  • -H

    Этот внутренний вариант не задокументирован, но широко используется сообществом.

    а также

    Был заменен в 3.13 на флаг официального каталога источника -S.

  • -B

    Начиная с CMake 3.13, -B является официально поддерживаемым флагом, может правильно обрабатывать пробелы и может использоваться независимо от опций -S или -H.