E / Volley: ff.a: неожиданный код ответа 413 для https://clients4.google.com/glm/mmap/api

Похоже, вы хотите из исходной сборки . Есть несколько способов, которыми вы можете создать сборку источника.

  1. Выполняйте то, что вы делали, запустите
    cd /path/to/my/build/folder
    cmake /path/to/my/source/folder
    
    , из-за чего cmake будет генерировать дерево сборки в /path/to/my/build/folder для дерева источника в /path/to/my/source/folder. Когда вы его создали, cmake запоминает, где находится исходная папка, поэтому вы можете повторно запустить cmake в дереве сборки с помощью
    cmake /path/to/my/build/folder
    
    или даже
    cmake .
    
    , если ваш текущий каталог уже является папкой сборки.
  2. Используйте некоторые недокументированные опции , чтобы установить папки источника и сборки :
    cmake -B/path/to/my/build/folder -H/path/to/my/source/folder
    
    , которые будут делать то же самое, что и (1), но без зависимости от текущего рабочего каталога.

По умолчанию CMake выставляет все свои выходы в дереве сборки , поэтому, если вы не используете ${CMAKE_SOURCE_DIR} или ${CMAKE_CURRENT_SOURCE_DIR} в ваших файлах cmake, не должны касаться вашего исходное дерево .

Самое большое, что может пойти не так, если вы уже создали дерево сборки в исходном дереве (т. е. у вас есть в источнике строить). После того, как вы сделали это, вторая часть (1) выше ударит, а cmake не вносит никаких изменений в места источника или сборки. Таким образом, вы не можете создать сборку вне источника для исходного каталога с встроенной сборкой. Вы можете исправить это довольно легко, удалив (как минимум) CMakeCache.txt из исходного каталога. Есть еще несколько файлов (в основном в каталоге CMakeFiles), которые CMake генерирует, которые вы также должны удалить, но это не приведет к тому, что cmake обработает исходное дерево как дерево сборки.

Поскольку сборки вне исходного кода часто более желательны, чем сборники в источнике, вы можете изменить свой cmake, чтобы потребовать от исходных построений:

# Ensures that we do an out of source build

MACRO(MACRO_ENSURE_OUT_OF_SOURCE_BUILD MSG)
     STRING(COMPARE EQUAL "${CMAKE_SOURCE_DIR}"
     "${CMAKE_BINARY_DIR}" insource)
     GET_FILENAME_COMPONENT(PARENTDIR ${CMAKE_SOURCE_DIR} PATH)
     STRING(COMPARE EQUAL "${CMAKE_SOURCE_DIR}"
     "${PARENTDIR}" insourcesubdir)
    IF(insource OR insourcesubdir)
        MESSAGE(FATAL_ERROR "${MSG}")
    ENDIF(insource OR insourcesubdir)
ENDMACRO(MACRO_ENSURE_OUT_OF_SOURCE_BUILD)

MACRO_ENSURE_OUT_OF_SOURCE_BUILD(
    "${CMAKE_PROJECT_NAME} requires an out of source build."
)

Вышеуказанный макрос происходит из обычно используемого модуля, называемого MacroOutOfSourceBuild. Есть много источников для MacroOutOfSourceBuild.cmake в google, но я не могу найти оригинал, и он достаточно короткий, чтобы включить здесь полностью.

К сожалению, cmake обычно записывал несколько файлов к тому моменту, когда макрос вызывается, так что, хотя это не остановит вас от фактического выполнения сборки, вам все равно нужно удалить CMakeCache.txt и CMakeFiles.

Возможно, вам будет полезно установить пути, в которых используются двоичные, общие и статические библиотеки записываются в - в этом случае см. , как я могу сделать вывод cmake в «bin» dir? (отказ от ответственности, у меня есть главный голосовой ответ на этот вопрос ... но вот как я знаю о она).

0
задан Okan Atabağ 27 March 2019 в 09:05
поделиться