Merge topic 'export-final-location'
fea3e84
export(): Document undefined behavior of location properties363d396
Factor out target location undefined behavior helper macro
This commit is contained in:
commit
01e825332c
|
@ -162,6 +162,7 @@ SET(SRCS
|
||||||
cmDocumentationSection.cxx
|
cmDocumentationSection.cxx
|
||||||
cmDocumentCompileDefinitions.h
|
cmDocumentCompileDefinitions.h
|
||||||
cmDocumentGeneratorExpressions.h
|
cmDocumentGeneratorExpressions.h
|
||||||
|
cmDocumentLocationUndefined.h
|
||||||
cmDocumentVariables.cxx
|
cmDocumentVariables.cxx
|
||||||
cmDynamicLoader.cxx
|
cmDynamicLoader.cxx
|
||||||
cmDynamicLoader.h
|
cmDynamicLoader.h
|
||||||
|
|
|
@ -0,0 +1,24 @@
|
||||||
|
/*============================================================================
|
||||||
|
CMake - Cross Platform Makefile Generator
|
||||||
|
Copyright 2000-2011 Kitware, Inc., Insight Software Consortium
|
||||||
|
|
||||||
|
Distributed under the OSI-approved BSD License (the "License");
|
||||||
|
see accompanying file Copyright.txt for details.
|
||||||
|
|
||||||
|
This software is distributed WITHOUT ANY WARRANTY; without even the
|
||||||
|
implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
|
See the License for more information.
|
||||||
|
============================================================================*/
|
||||||
|
#ifndef cmDocumentLocationUndefined_h
|
||||||
|
#define cmDocumentLocationUndefined_h
|
||||||
|
|
||||||
|
#define CM_LOCATION_UNDEFINED_BEHAVIOR(action) \
|
||||||
|
"\n" \
|
||||||
|
"Do not set properties that affect the location of a target after " \
|
||||||
|
action ". These include properties whose names match " \
|
||||||
|
"\"(RUNTIME|LIBRARY|ARCHIVE)_OUTPUT_(NAME|DIRECTORY)(_<CONFIG>)?\" " \
|
||||||
|
"or \"(IMPLIB_)?(PREFIX|SUFFIX)\". " \
|
||||||
|
"Failure to follow this rule is not diagnosed and leaves the location " \
|
||||||
|
"of the target undefined."
|
||||||
|
|
||||||
|
#endif
|
|
@ -13,6 +13,7 @@
|
||||||
#define cmExportCommand_h
|
#define cmExportCommand_h
|
||||||
|
|
||||||
#include "cmCommand.h"
|
#include "cmCommand.h"
|
||||||
|
#include "cmDocumentLocationUndefined.h"
|
||||||
|
|
||||||
class cmExportBuildFileGenerator;
|
class cmExportBuildFileGenerator;
|
||||||
|
|
||||||
|
@ -80,6 +81,7 @@ public:
|
||||||
"should never be installed. "
|
"should never be installed. "
|
||||||
"See the install(EXPORT) command to export targets from an "
|
"See the install(EXPORT) command to export targets from an "
|
||||||
"installation tree."
|
"installation tree."
|
||||||
|
CM_LOCATION_UNDEFINED_BEHAVIOR("passing it to this command")
|
||||||
"\n"
|
"\n"
|
||||||
" export(PACKAGE <name>)\n"
|
" export(PACKAGE <name>)\n"
|
||||||
"Store the current build directory in the CMake user package registry "
|
"Store the current build directory in the CMake user package registry "
|
||||||
|
|
|
@ -17,6 +17,7 @@
|
||||||
#include "cmGlobalGenerator.h"
|
#include "cmGlobalGenerator.h"
|
||||||
#include "cmComputeLinkInformation.h"
|
#include "cmComputeLinkInformation.h"
|
||||||
#include "cmDocumentCompileDefinitions.h"
|
#include "cmDocumentCompileDefinitions.h"
|
||||||
|
#include "cmDocumentLocationUndefined.h"
|
||||||
#include "cmListFileCache.h"
|
#include "cmListFileCache.h"
|
||||||
#include "cmGeneratorExpression.h"
|
#include "cmGeneratorExpression.h"
|
||||||
#include <cmsys/RegularExpression.hxx>
|
#include <cmsys/RegularExpression.hxx>
|
||||||
|
@ -584,15 +585,6 @@ void cmTarget::DefineProperties(cmake *cm)
|
||||||
"value is the default. "
|
"value is the default. "
|
||||||
"See documentation of CMAKE_<LANG>_LINKER_PREFERENCE variables.");
|
"See documentation of CMAKE_<LANG>_LINKER_PREFERENCE variables.");
|
||||||
|
|
||||||
#define CM_LOCATION_UNDEFINED_BEHAVIOR \
|
|
||||||
"\n" \
|
|
||||||
"Do not set properties that affect the location of the target after " \
|
|
||||||
"reading this property. These include properties whose names match " \
|
|
||||||
"\"(RUNTIME|LIBRARY|ARCHIVE)_OUTPUT_(NAME|DIRECTORY)(_<CONFIG>)?\" " \
|
|
||||||
"or \"(IMPLIB_)?(PREFIX|SUFFIX)\". " \
|
|
||||||
"Failure to follow this rule is not diagnosed and leaves the location " \
|
|
||||||
"of the target undefined."
|
|
||||||
|
|
||||||
cm->DefineProperty
|
cm->DefineProperty
|
||||||
("LOCATION", cmProperty::TARGET,
|
("LOCATION", cmProperty::TARGET,
|
||||||
"Read-only location of a target on disk.",
|
"Read-only location of a target on disk.",
|
||||||
|
@ -612,7 +604,7 @@ void cmTarget::DefineProperties(cmake *cm)
|
||||||
"In CMake 2.8.4 and above add_custom_command recognizes generator "
|
"In CMake 2.8.4 and above add_custom_command recognizes generator "
|
||||||
"expressions to refer to target locations anywhere in the command. "
|
"expressions to refer to target locations anywhere in the command. "
|
||||||
"Therefore this property is not needed for creating custom commands."
|
"Therefore this property is not needed for creating custom commands."
|
||||||
CM_LOCATION_UNDEFINED_BEHAVIOR);
|
CM_LOCATION_UNDEFINED_BEHAVIOR("reading this property"));
|
||||||
|
|
||||||
cm->DefineProperty
|
cm->DefineProperty
|
||||||
("LOCATION_<CONFIG>", cmProperty::TARGET,
|
("LOCATION_<CONFIG>", cmProperty::TARGET,
|
||||||
|
@ -626,7 +618,7 @@ void cmTarget::DefineProperties(cmake *cm)
|
||||||
"arbitrary available configuration. "
|
"arbitrary available configuration. "
|
||||||
"Use the MAP_IMPORTED_CONFIG_<CONFIG> property to map imported "
|
"Use the MAP_IMPORTED_CONFIG_<CONFIG> property to map imported "
|
||||||
"configurations explicitly."
|
"configurations explicitly."
|
||||||
CM_LOCATION_UNDEFINED_BEHAVIOR);
|
CM_LOCATION_UNDEFINED_BEHAVIOR("reading this property"));
|
||||||
|
|
||||||
cm->DefineProperty
|
cm->DefineProperty
|
||||||
("LINK_DEPENDS", cmProperty::TARGET,
|
("LINK_DEPENDS", cmProperty::TARGET,
|
||||||
|
|
|
@ -173,6 +173,12 @@ ELSE(STAGE2)
|
||||||
TARGET_LINK_LIBRARIES(SimpleInstall test1 test2 test4)
|
TARGET_LINK_LIBRARIES(SimpleInstall test1 test2 test4)
|
||||||
SET(install_target SimpleInstall)
|
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.
|
# Make sure the test executable can run from the install tree.
|
||||||
SET_TARGET_PROPERTIES(SimpleInstall PROPERTIES
|
SET_TARGET_PROPERTIES(SimpleInstall PROPERTIES
|
||||||
INSTALL_RPATH ${CMAKE_INSTALL_PREFIX}/MyTest/lib)
|
INSTALL_RPATH ${CMAKE_INSTALL_PREFIX}/MyTest/lib)
|
||||||
|
@ -293,11 +299,6 @@ ELSE(STAGE2)
|
||||||
ADDITIONAL_MAKE_CLEAN_FILES
|
ADDITIONAL_MAKE_CLEAN_FILES
|
||||||
"${CMAKE_INSTALL_PREFIX}/InstallScriptOut.cmake;${CMAKE_INSTALL_PREFIX}/InstallScript4Out.cmake")
|
"${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
|
SET_TARGET_PROPERTIES(SimpleInstall PROPERTIES PRE_INSTALL_SCRIPT
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/PreInstall.cmake)
|
${CMAKE_CURRENT_SOURCE_DIR}/PreInstall.cmake)
|
||||||
SET_TARGET_PROPERTIES(SimpleInstall PROPERTIES POST_INSTALL_SCRIPT
|
SET_TARGET_PROPERTIES(SimpleInstall PROPERTIES POST_INSTALL_SCRIPT
|
||||||
|
|
|
@ -173,6 +173,12 @@ ELSE(STAGE2)
|
||||||
TARGET_LINK_LIBRARIES(SimpleInstall test1 test2 test4)
|
TARGET_LINK_LIBRARIES(SimpleInstall test1 test2 test4)
|
||||||
SET(install_target SimpleInstall)
|
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.
|
# Make sure the test executable can run from the install tree.
|
||||||
SET_TARGET_PROPERTIES(SimpleInstall PROPERTIES
|
SET_TARGET_PROPERTIES(SimpleInstall PROPERTIES
|
||||||
INSTALL_RPATH ${CMAKE_INSTALL_PREFIX}/MyTest/lib)
|
INSTALL_RPATH ${CMAKE_INSTALL_PREFIX}/MyTest/lib)
|
||||||
|
@ -293,11 +299,6 @@ ELSE(STAGE2)
|
||||||
ADDITIONAL_MAKE_CLEAN_FILES
|
ADDITIONAL_MAKE_CLEAN_FILES
|
||||||
"${CMAKE_INSTALL_PREFIX}/InstallScriptOut.cmake;${CMAKE_INSTALL_PREFIX}/InstallScript4Out.cmake")
|
"${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
|
SET_TARGET_PROPERTIES(SimpleInstall PROPERTIES PRE_INSTALL_SCRIPT
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/PreInstall.cmake)
|
${CMAKE_CURRENT_SOURCE_DIR}/PreInstall.cmake)
|
||||||
SET_TARGET_PROPERTIES(SimpleInstall PROPERTIES POST_INSTALL_SCRIPT
|
SET_TARGET_PROPERTIES(SimpleInstall PROPERTIES POST_INSTALL_SCRIPT
|
||||||
|
|
Loading…
Reference in New Issue