Browse Source

export(): Document undefined behavior of location properties

Since the export() command needs to know the final location of a target
in the build tree we cannot allow properties affecting the location or
name of a target file to be set after the target is passed to export().

Fix a violation of this rule in the SimpleInstall test.
Brad King 14 years ago
parent
commit
fea3e84ee3

+ 2 - 0
Source/cmExportCommand.h

@@ -13,6 +13,7 @@
 #define cmExportCommand_h
 
 #include "cmCommand.h"
+#include "cmDocumentLocationUndefined.h"
 
 class cmExportBuildFileGenerator;
 
@@ -80,6 +81,7 @@ public:
       "should never be installed.  "
       "See the install(EXPORT) command to export targets from an "
       "installation tree."
+      CM_LOCATION_UNDEFINED_BEHAVIOR("passing it to this command")
       "\n"
       "  export(PACKAGE <name>)\n"
       "Store the current build directory in the CMake user package registry "

+ 6 - 5
Tests/SimpleInstall/CMakeLists.txt

@@ -173,6 +173,12 @@ ELSE(STAGE2)
   TARGET_LINK_LIBRARIES(SimpleInstall test1 test2 test4)
   SET(install_target SimpleInstall)
 
+  SET_TARGET_PROPERTIES(SimpleInstall PROPERTIES OUTPUT_NAME SimpleInstExe)
+  # Disable VERSION test until it is implemented in the Xcode generator.
+  IF(NOT XCODE)
+    SET_TARGET_PROPERTIES(SimpleInstall PROPERTIES VERSION 1.2)
+  ENDIF(NOT XCODE)
+
   # Make sure the test executable can run from the install tree.
   SET_TARGET_PROPERTIES(SimpleInstall PROPERTIES
     INSTALL_RPATH ${CMAKE_INSTALL_PREFIX}/MyTest/lib)
@@ -293,11 +299,6 @@ ELSE(STAGE2)
     ADDITIONAL_MAKE_CLEAN_FILES
     "${CMAKE_INSTALL_PREFIX}/InstallScriptOut.cmake;${CMAKE_INSTALL_PREFIX}/InstallScript4Out.cmake")
 
-  SET_TARGET_PROPERTIES(SimpleInstall PROPERTIES OUTPUT_NAME SimpleInstExe)
-  # Disable VERSION test until it is implemented in the Xcode generator.
-  IF(NOT XCODE)
-    SET_TARGET_PROPERTIES(SimpleInstall PROPERTIES VERSION 1.2)
-  ENDIF(NOT XCODE)
   SET_TARGET_PROPERTIES(SimpleInstall PROPERTIES PRE_INSTALL_SCRIPT 
     ${CMAKE_CURRENT_SOURCE_DIR}/PreInstall.cmake)
   SET_TARGET_PROPERTIES(SimpleInstall PROPERTIES POST_INSTALL_SCRIPT 

+ 6 - 5
Tests/SimpleInstallS2/CMakeLists.txt

@@ -173,6 +173,12 @@ ELSE(STAGE2)
   TARGET_LINK_LIBRARIES(SimpleInstall test1 test2 test4)
   SET(install_target SimpleInstall)
 
+  SET_TARGET_PROPERTIES(SimpleInstall PROPERTIES OUTPUT_NAME SimpleInstExe)
+  # Disable VERSION test until it is implemented in the Xcode generator.
+  IF(NOT XCODE)
+    SET_TARGET_PROPERTIES(SimpleInstall PROPERTIES VERSION 1.2)
+  ENDIF(NOT XCODE)
+
   # Make sure the test executable can run from the install tree.
   SET_TARGET_PROPERTIES(SimpleInstall PROPERTIES
     INSTALL_RPATH ${CMAKE_INSTALL_PREFIX}/MyTest/lib)
@@ -293,11 +299,6 @@ ELSE(STAGE2)
     ADDITIONAL_MAKE_CLEAN_FILES
     "${CMAKE_INSTALL_PREFIX}/InstallScriptOut.cmake;${CMAKE_INSTALL_PREFIX}/InstallScript4Out.cmake")
 
-  SET_TARGET_PROPERTIES(SimpleInstall PROPERTIES OUTPUT_NAME SimpleInstExe)
-  # Disable VERSION test until it is implemented in the Xcode generator.
-  IF(NOT XCODE)
-    SET_TARGET_PROPERTIES(SimpleInstall PROPERTIES VERSION 1.2)
-  ENDIF(NOT XCODE)
   SET_TARGET_PROPERTIES(SimpleInstall PROPERTIES PRE_INSTALL_SCRIPT 
     ${CMAKE_CURRENT_SOURCE_DIR}/PreInstall.cmake)
   SET_TARGET_PROPERTIES(SimpleInstall PROPERTIES POST_INSTALL_SCRIPT