Kaynağa Gözat

Merge topic 'dev/export-target-without-language'

5837f19 export: Error when exporting a target without a language
Brad King 12 yıl önce
ebeveyn
işleme
10e54cd6c9

+ 10 - 0
Source/cmExportFileGenerator.cxx

@@ -349,6 +349,16 @@ void getCompatibleInterfaceProperties(cmTarget *target,
 {
   cmComputeLinkInformation *info = target->GetLinkInformation(config);
 
+  if (!info)
+    {
+    cmMakefile* mf = target->GetMakefile();
+    cmOStringStream e;
+    e << "Exporting the target \"" << target->GetName() << "\" is not "
+         "allowed since its linker language cannot be determined";
+    mf->IssueMessage(cmake::FATAL_ERROR, e.str());
+    return;
+    }
+
   const cmComputeLinkInformation::ItemVector &deps = info->GetItems();
 
   for(cmComputeLinkInformation::ItemVector::const_iterator li =

+ 1 - 0
Tests/RunCMake/CMakeLists.txt

@@ -115,4 +115,5 @@ if("${CMAKE_TEST_GENERATOR}" MATCHES "Visual Studio [^6]")
 endif()
 
 add_RunCMake_test(File_Generate)
+add_RunCMake_test(ExportWithoutLanguage)
 add_RunCMake_test(target_link_libraries)

+ 3 - 0
Tests/RunCMake/ExportWithoutLanguage/CMakeLists.txt

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

+ 1 - 0
Tests/RunCMake/ExportWithoutLanguage/NoLanguage-result.txt

@@ -0,0 +1 @@
+1

+ 6 - 0
Tests/RunCMake/ExportWithoutLanguage/NoLanguage-stderr.txt

@@ -0,0 +1,6 @@
+CMake Error: CMake can not determine linker language for target: NoLanguage
+CMake Error at NoLanguage.cmake:2 \(export\):
+  Exporting the target "NoLanguage" is not allowed since its linker language
+  cannot be determined
+Call Stack \(most recent call first\):
+  CMakeLists.txt:3 \(include\)

+ 2 - 0
Tests/RunCMake/ExportWithoutLanguage/NoLanguage.cmake

@@ -0,0 +1,2 @@
+add_library(NoLanguage header.h)
+export(TARGETS NoLanguage FILE "${CMAKE_CURRENT_BINARY_DIR}/export.cmake")

+ 3 - 0
Tests/RunCMake/ExportWithoutLanguage/RunCMakeTest.cmake

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