Кажется, что ExternalProject_Add
не нравится a бинарный каталог внутри источника один.Из документации ExternalProject :
Примечание : Если указан метод загрузки, любое существующее содержимое исходного каталога может быть удалено.Только метод загрузки URL-адреса проверяет, является ли этот каталог отсутствующим или пустым перед началом загрузки, останавливаясь с ошибкой, если он не пустой.Все остальные методы загрузки молча отбрасывают любое предыдущее содержимое исходного каталога.
К счастью, для большинства проектов каталог binary на самом деле не нуждается в , чтобы бытьвнутри source one: README проектов дают каталог <src>/build
как просто пример каталога компоновки.
Для двоичного каталога вне исходного, ExternalProject_Add
создает двоичный каталог автоматически .
Нужно просто убедиться, что опция BINARY_DIR
стоит перед любой опцией, которая зависит от этогонастройка каталога:
ExternalProject_Add(my_ext_project
GIT_REPOSITORY repo...
SOURCE_DIR "project_src"
# Setting BINARY_DIR should come **before** CONFIGURE_COMMAND and BUILD_COMMAND
BINARY_DIR "project_bin"
# It is a way to refer to source directory in the ExternalProject_Add COMMAND.
CONFIGURE_COMMAND cmake <SOURCE_DIR>
BUILD_COMMAND make
)
Обратите внимание, что такими командами CONFIGURE и BUILD являются по умолчанию для ExternalProject_Add
, поэтому вы можете их опустить:
ExternalProject_Add(my_ext_project
GIT_REPOSITORY repo...
SOURCE_DIR "project_src"
BINARY_DIR "project_bin"
# "Standard" CMake project doesn't require to specify any COMMAND.
)