diff --git a/Source/cmExportCommand.cxx b/Source/cmExportCommand.cxx index 43d26f9e4..96ea77b2d 100644 --- a/Source/cmExportCommand.cxx +++ b/Source/cmExportCommand.cxx @@ -177,6 +177,12 @@ bool cmExportCommand this->SetError(e.str()); return false; } + if (target->GetType() == cmTarget::UTILITY) + { + this->SetError("given custom target \"" + *currentTarget + + "\" which may not be exported."); + return false; + } } else { diff --git a/Tests/RunCMake/export/CustomTarget-result.txt b/Tests/RunCMake/export/CustomTarget-result.txt new file mode 100644 index 000000000..d00491fd7 --- /dev/null +++ b/Tests/RunCMake/export/CustomTarget-result.txt @@ -0,0 +1 @@ +1 diff --git a/Tests/RunCMake/export/CustomTarget-stderr.txt b/Tests/RunCMake/export/CustomTarget-stderr.txt new file mode 100644 index 000000000..57a9af368 --- /dev/null +++ b/Tests/RunCMake/export/CustomTarget-stderr.txt @@ -0,0 +1,4 @@ +^CMake Error at CustomTarget.cmake:[0-9]+ \(export\): + export given custom target "CustomTarget" which may not be exported. +Call Stack \(most recent call first\): + CMakeLists.txt:3 \(include\)$ diff --git a/Tests/RunCMake/export/CustomTarget.cmake b/Tests/RunCMake/export/CustomTarget.cmake new file mode 100644 index 000000000..4d2bf18db --- /dev/null +++ b/Tests/RunCMake/export/CustomTarget.cmake @@ -0,0 +1,2 @@ +add_custom_target(CustomTarget) +export(TARGETS CustomTarget FILE somefile.cmake) diff --git a/Tests/RunCMake/export/RunCMakeTest.cmake b/Tests/RunCMake/export/RunCMakeTest.cmake index 4b04f1858..6d0b7ca7c 100644 --- a/Tests/RunCMake/export/RunCMakeTest.cmake +++ b/Tests/RunCMake/export/RunCMakeTest.cmake @@ -1,5 +1,6 @@ include(RunCMake) +run_cmake(CustomTarget) run_cmake(TargetNotFound) run_cmake(AppendExport) run_cmake(OldIface)