ExternalProject: Improve error when SOURCE_DIR is missing (#15560)

Mention the SOURCE_DIR that we checked and found empty or missing
so that the user can see the full path to what we expected to find.
This commit is contained in:
Brad King 2015-05-08 09:18:50 -04:00
parent 4566850bdd
commit dcb188363d
11 changed files with 81 additions and 1 deletions

View File

@ -1866,7 +1866,18 @@ function(_ep_add_download_command name)
else() else()
_ep_is_dir_empty("${source_dir}" empty) _ep_is_dir_empty("${source_dir}" empty)
if(${empty}) if(${empty})
message(SEND_ERROR "error: no download info for '${name}' -- please specify existing/non-empty SOURCE_DIR or one of URL, CVS_REPOSITORY and CVS_MODULE, SVN_REPOSITORY, GIT_REPOSITORY, HG_REPOSITORY or DOWNLOAD_COMMAND") message(SEND_ERROR
"No download info given for '${name}' and its source directory:\n"
" ${source_dir}\n"
"is not an existing non-empty directory. Please specify one of:\n"
" * SOURCE_DIR with an existing non-empty directory\n"
" * URL\n"
" * GIT_REPOSITORY\n"
" * HG_REPOSITORY\n"
" * CVS_REPOSITORY and CVS_MODULE\n"
" * SVN_REVISION\n"
" * DOWNLOAD_COMMAND"
)
endif() endif()
endif() endif()

View File

@ -0,0 +1 @@
1

View File

@ -0,0 +1,18 @@
^CMake Error at .*/Modules/ExternalProject.cmake:[0-9]+ \(message\):
No download info given for 'MyProj' and its source directory:
.*/Tests/RunCMake/ExternalProject/NoOptions-build/MyProj-prefix/src/MyProj
is not an existing non-empty directory. Please specify one of:
\* SOURCE_DIR with an existing non-empty directory
\* URL
\* GIT_REPOSITORY
\* HG_REPOSITORY
\* CVS_REPOSITORY and CVS_MODULE
\* SVN_REVISION
\* DOWNLOAD_COMMAND
Call Stack \(most recent call first\):
.*/Modules/ExternalProject.cmake:[0-9]+ \(_ep_add_download_command\)
NoOptions.cmake:[0-9]+ \(ExternalProject_Add\)
CMakeLists.txt:[0-9]+ \(include\)$

View File

@ -0,0 +1,2 @@
include(ExternalProject)
ExternalProject_Add(MyProj)

View File

@ -1,5 +1,8 @@
include(RunCMake) include(RunCMake)
run_cmake(NoOptions)
run_cmake(SourceEmpty)
run_cmake(SourceMissing)
run_cmake(CMAKE_CACHE_ARGS) run_cmake(CMAKE_CACHE_ARGS)
run_cmake(CMAKE_CACHE_DEFAULT_ARGS) run_cmake(CMAKE_CACHE_DEFAULT_ARGS)
run_cmake(CMAKE_CACHE_mix) run_cmake(CMAKE_CACHE_mix)

View File

@ -0,0 +1 @@
1

View File

@ -0,0 +1,18 @@
^CMake Error at .*/Modules/ExternalProject.cmake:[0-9]+ \(message\):
No download info given for 'MyProj' and its source directory:
.*/Tests/RunCMake/ExternalProject/SourceEmpty-build/SourceEmpty
is not an existing non-empty directory. Please specify one of:
\* SOURCE_DIR with an existing non-empty directory
\* URL
\* GIT_REPOSITORY
\* HG_REPOSITORY
\* CVS_REPOSITORY and CVS_MODULE
\* SVN_REVISION
\* DOWNLOAD_COMMAND
Call Stack \(most recent call first\):
.*/Modules/ExternalProject.cmake:[0-9]+ \(_ep_add_download_command\)
SourceEmpty.cmake:[0-9]+ \(ExternalProject_Add\)
CMakeLists.txt:[0-9]+ \(include\)$

View File

@ -0,0 +1,5 @@
include(ExternalProject)
set(source_dir "${CMAKE_CURRENT_BINARY_DIR}/SourceEmpty")
file(REMOVE_RECURSE "${source_dir}")
file(MAKE_DIRECTORY "${source_dir}")
ExternalProject_Add(MyProj SOURCE_DIR "${source_dir}")

View File

@ -0,0 +1 @@
1

View File

@ -0,0 +1,18 @@
^CMake Error at .*/Modules/ExternalProject.cmake:[0-9]+ \(message\):
No download info given for 'MyProj' and its source directory:
.*/Tests/RunCMake/ExternalProject/SourceMissing-build/SourceMissing
is not an existing non-empty directory. Please specify one of:
\* SOURCE_DIR with an existing non-empty directory
\* URL
\* GIT_REPOSITORY
\* HG_REPOSITORY
\* CVS_REPOSITORY and CVS_MODULE
\* SVN_REVISION
\* DOWNLOAD_COMMAND
Call Stack \(most recent call first\):
.*/Modules/ExternalProject.cmake:[0-9]+ \(_ep_add_download_command\)
SourceMissing.cmake:[0-9]+ \(ExternalProject_Add\)
CMakeLists.txt:[0-9]+ \(include\)$

View File

@ -0,0 +1,2 @@
include(ExternalProject)
ExternalProject_Add(MyProj SOURCE_DIR SourceMissing)