add_dependencies: Distinguish target v. file dependencies in error (#14050)

When called with a non-existent LHS target name the user may be trying
to add file-level dependencies.  Clarify the error message to explain
the difference between target-level and file-level dependencies.  Point
the reader at the commands and options needed for the latter.
This commit is contained in:
Brad King 2013-03-29 14:53:36 -04:00
parent 1f16bd24ee
commit de13d68d11
7 changed files with 26 additions and 4 deletions

View File

@ -35,10 +35,14 @@ bool cmAddDependenciesCommand
} }
else else
{ {
std::string error = "Adding dependency to non-existent target: "; cmOStringStream e;
error += target_name; e << "Cannot add target-level dependencies to non-existent target \""
this->SetError(error.c_str()); << target_name << "\".\n"
return false; << "The add_dependencies works for top-level logical targets created "
<< "by the add_executable, add_library, or add_custom_target commands. "
<< "If you want to add file-level dependencies see the DEPENDS option "
<< "of the add_custom_target and add_custom_command commands.";
this->Makefile->IssueMessage(cmake::FATAL_ERROR, e.str());
} }
return true; return true;

View File

@ -68,6 +68,7 @@ if(NOT WIN32)
endif() endif()
add_RunCMake_test(CompatibleInterface) add_RunCMake_test(CompatibleInterface)
add_RunCMake_test(add_dependencies)
add_RunCMake_test(build_command) add_RunCMake_test(build_command)
add_RunCMake_test(find_package) add_RunCMake_test(find_package)
add_RunCMake_test(include) add_RunCMake_test(include)

View File

@ -0,0 +1,3 @@
cmake_minimum_required(VERSION 2.8)
project(${RunCMake_TEST} NONE)
include(${RunCMake_TEST}.cmake)

View File

@ -0,0 +1 @@
1

View File

@ -0,0 +1,9 @@
CMake Error at NoTarget.cmake:1 \(add_dependencies\):
Cannot add target-level dependencies to non-existent target "foo".
The add_dependencies works for top-level logical targets created by the
add_executable, add_library, or add_custom_target commands. If you want to
add file-level dependencies see the DEPENDS option of the add_custom_target
and add_custom_command commands.
Call Stack \(most recent call first\):
CMakeLists.txt:3 \(include\)

View File

@ -0,0 +1 @@
add_dependencies(foo bar)

View File

@ -0,0 +1,3 @@
include(RunCMake)
run_cmake(NoTarget)