ENH: Re-enable diagnosis of non-unique target names.
- Re-enable enforcement in cmMakefile::EnforceUniqueName - Improve error message to help user resolve the problem - Fix Modules/CTestTargets.cmake to not duplicate testing targets - Move commands used by the changes to Modules/CTestTargets.cmake to build during bootstrap: DEFINE_PROPERTY, GET_PROPERTY
This commit is contained in:
parent
8375bb4768
commit
5b02a4a864
|
@ -35,32 +35,35 @@ IF(CMAKE_CONFIGURATION_TYPES)
|
||||||
SET(__conf_types -C "${CMAKE_CFG_INTDIR}")
|
SET(__conf_types -C "${CMAKE_CFG_INTDIR}")
|
||||||
ENDIF(CMAKE_CONFIGURATION_TYPES)
|
ENDIF(CMAKE_CONFIGURATION_TYPES)
|
||||||
|
|
||||||
# add testing targets
|
# Add convenience targets. Do this at most once in case of nested
|
||||||
IF(${CMAKE_MAKE_PROGRAM} MATCHES make)
|
# projects.
|
||||||
|
DEFINE_PROPERTY(CTEST_TARGETS_ADDED GLOBAL
|
||||||
|
"Internal property used by CTestTargets module."
|
||||||
|
"Set by the CTestTargets module to track addition of testing targets."
|
||||||
|
FALSE)
|
||||||
|
GET_PROPERTY(_CTEST_TARGETS_ADDED GLOBAL PROPERTY CTEST_TARGETS_ADDED)
|
||||||
|
IF(NOT _CTEST_TARGETS_ADDED)
|
||||||
|
SET_PROPERTY(GLOBAL PROPERTY CTEST_TARGETS_ADDED 1)
|
||||||
|
|
||||||
|
# For all generators add basic testing targets.
|
||||||
FOREACH(mode Experimental Nightly Continuous NightlyMemoryCheck)
|
FOREACH(mode Experimental Nightly Continuous NightlyMemoryCheck)
|
||||||
ADD_CUSTOM_TARGET(${mode} ${CMAKE_CTEST_COMMAND} ${__conf_types} -D ${mode})
|
ADD_CUSTOM_TARGET(${mode}
|
||||||
|
${CMAKE_CTEST_COMMAND} ${__conf_types} -D ${mode}
|
||||||
|
)
|
||||||
ENDFOREACH(mode)
|
ENDFOREACH(mode)
|
||||||
ELSE(${CMAKE_MAKE_PROGRAM} MATCHES make)
|
|
||||||
# for IDE only add them once for nested projects
|
# For Makefile generators add more granular targets.
|
||||||
IF (NOT DART_COMMON_TARGETS_ADDED)
|
IF("${CMAKE_GENERATOR}" MATCHES Make)
|
||||||
FOREACH(mode Experimental Nightly Continuous NightlyMemoryCheck)
|
# Make targets for Experimental builds
|
||||||
ADD_CUSTOM_TARGET(${mode} ${CMAKE_CTEST_COMMAND} ${__conf_types} -D ${mode})
|
FOREACH(mode Nightly Experimental Continuous)
|
||||||
|
FOREACH(testtype
|
||||||
|
Start Update Configure Build Test Coverage MemCheck Submit
|
||||||
|
# missing purify
|
||||||
|
)
|
||||||
|
ADD_CUSTOM_TARGET(${mode}${testtype}
|
||||||
|
${CMAKE_CTEST_COMMAND} ${__conf_types} -D ${mode}${testtype}
|
||||||
|
)
|
||||||
|
ENDFOREACH(testtype)
|
||||||
ENDFOREACH(mode)
|
ENDFOREACH(mode)
|
||||||
SET (DART_COMMON_TARGETS_ADDED 1)
|
ENDIF("${CMAKE_GENERATOR}" MATCHES Make)
|
||||||
ENDIF (NOT DART_COMMON_TARGETS_ADDED)
|
ENDIF(NOT _CTEST_TARGETS_ADDED)
|
||||||
ENDIF(${CMAKE_MAKE_PROGRAM} MATCHES make)
|
|
||||||
|
|
||||||
|
|
||||||
# for non IDE based builds nmake and make
|
|
||||||
# add all these extra targets
|
|
||||||
IF(${CMAKE_MAKE_PROGRAM} MATCHES make)
|
|
||||||
# Make targets for Experimental builds
|
|
||||||
FOREACH(mode Nightly Experimental Continuous)
|
|
||||||
FOREACH(testtype Start Update Configure Build Test Coverage MemCheck Submit)
|
|
||||||
# missing purify
|
|
||||||
ADD_CUSTOM_TARGET(${mode}${testtype}
|
|
||||||
${CMAKE_CTEST_COMMAND} ${__conf_types} -D ${mode}${testtype})
|
|
||||||
ENDFOREACH(testtype)
|
|
||||||
ENDFOREACH(mode)
|
|
||||||
ENDIF (${CMAKE_MAKE_PROGRAM} MATCHES make)
|
|
||||||
|
|
||||||
|
|
|
@ -34,6 +34,7 @@
|
||||||
#include "cmConfigureFileCommand.cxx"
|
#include "cmConfigureFileCommand.cxx"
|
||||||
#include "cmCoreTryCompile.cxx"
|
#include "cmCoreTryCompile.cxx"
|
||||||
#include "cmCreateTestSourceList.cxx"
|
#include "cmCreateTestSourceList.cxx"
|
||||||
|
#include "cmDefinePropertyCommand.cxx"
|
||||||
#include "cmElseCommand.cxx"
|
#include "cmElseCommand.cxx"
|
||||||
#include "cmEnableTestingCommand.cxx"
|
#include "cmEnableTestingCommand.cxx"
|
||||||
#include "cmEndForEachCommand.cxx"
|
#include "cmEndForEachCommand.cxx"
|
||||||
|
@ -56,6 +57,7 @@
|
||||||
#include "cmGetCMakePropertyCommand.cxx"
|
#include "cmGetCMakePropertyCommand.cxx"
|
||||||
#include "cmGetDirectoryPropertyCommand.cxx"
|
#include "cmGetDirectoryPropertyCommand.cxx"
|
||||||
#include "cmGetFilenameComponentCommand.cxx"
|
#include "cmGetFilenameComponentCommand.cxx"
|
||||||
|
#include "cmGetPropertyCommand.cxx"
|
||||||
#include "cmGetSourceFilePropertyCommand.cxx"
|
#include "cmGetSourceFilePropertyCommand.cxx"
|
||||||
#include "cmGetTargetPropertyCommand.cxx"
|
#include "cmGetTargetPropertyCommand.cxx"
|
||||||
#include "cmHexFileConverter.cxx"
|
#include "cmHexFileConverter.cxx"
|
||||||
|
@ -103,6 +105,7 @@ void GetBootstrapCommands(std::list<cmCommand*>& commands)
|
||||||
commands.push_back(new cmCMakeMinimumRequired);
|
commands.push_back(new cmCMakeMinimumRequired);
|
||||||
commands.push_back(new cmConfigureFileCommand);
|
commands.push_back(new cmConfigureFileCommand);
|
||||||
commands.push_back(new cmCreateTestSourceList);
|
commands.push_back(new cmCreateTestSourceList);
|
||||||
|
commands.push_back(new cmDefinePropertyCommand);
|
||||||
commands.push_back(new cmElseCommand);
|
commands.push_back(new cmElseCommand);
|
||||||
commands.push_back(new cmEnableTestingCommand);
|
commands.push_back(new cmEnableTestingCommand);
|
||||||
commands.push_back(new cmEndForEachCommand);
|
commands.push_back(new cmEndForEachCommand);
|
||||||
|
@ -122,6 +125,7 @@ void GetBootstrapCommands(std::list<cmCommand*>& commands)
|
||||||
commands.push_back(new cmGetCMakePropertyCommand);
|
commands.push_back(new cmGetCMakePropertyCommand);
|
||||||
commands.push_back(new cmGetDirectoryPropertyCommand);
|
commands.push_back(new cmGetDirectoryPropertyCommand);
|
||||||
commands.push_back(new cmGetFilenameComponentCommand);
|
commands.push_back(new cmGetFilenameComponentCommand);
|
||||||
|
commands.push_back(new cmGetPropertyCommand);
|
||||||
commands.push_back(new cmGetSourceFilePropertyCommand);
|
commands.push_back(new cmGetSourceFilePropertyCommand);
|
||||||
commands.push_back(new cmGetTargetPropertyCommand);
|
commands.push_back(new cmGetTargetPropertyCommand);
|
||||||
commands.push_back(new cmIfCommand);
|
commands.push_back(new cmIfCommand);
|
||||||
|
|
|
@ -18,14 +18,12 @@
|
||||||
#if defined(CMAKE_BUILD_WITH_CMAKE)
|
#if defined(CMAKE_BUILD_WITH_CMAKE)
|
||||||
#include "cmAuxSourceDirectoryCommand.cxx"
|
#include "cmAuxSourceDirectoryCommand.cxx"
|
||||||
#include "cmBuildNameCommand.cxx"
|
#include "cmBuildNameCommand.cxx"
|
||||||
#include "cmDefinePropertyCommand.cxx"
|
|
||||||
#include "cmElseIfCommand.cxx"
|
#include "cmElseIfCommand.cxx"
|
||||||
#include "cmEnableLanguageCommand.cxx"
|
#include "cmEnableLanguageCommand.cxx"
|
||||||
#include "cmEndWhileCommand.cxx"
|
#include "cmEndWhileCommand.cxx"
|
||||||
#include "cmExportCommand.cxx"
|
#include "cmExportCommand.cxx"
|
||||||
#include "cmExportLibraryDependencies.cxx"
|
#include "cmExportLibraryDependencies.cxx"
|
||||||
#include "cmFLTKWrapUICommand.cxx"
|
#include "cmFLTKWrapUICommand.cxx"
|
||||||
#include "cmGetPropertyCommand.cxx"
|
|
||||||
#include "cmGetTestPropertyCommand.cxx"
|
#include "cmGetTestPropertyCommand.cxx"
|
||||||
#include "cmIncludeExternalMSProjectCommand.cxx"
|
#include "cmIncludeExternalMSProjectCommand.cxx"
|
||||||
#include "cmInstallCommand.cxx"
|
#include "cmInstallCommand.cxx"
|
||||||
|
@ -64,14 +62,12 @@ void GetPredefinedCommands(std::list<cmCommand*>&
|
||||||
#if defined(CMAKE_BUILD_WITH_CMAKE)
|
#if defined(CMAKE_BUILD_WITH_CMAKE)
|
||||||
commands.push_back(new cmAuxSourceDirectoryCommand);
|
commands.push_back(new cmAuxSourceDirectoryCommand);
|
||||||
commands.push_back(new cmBuildNameCommand);
|
commands.push_back(new cmBuildNameCommand);
|
||||||
commands.push_back(new cmDefinePropertyCommand);
|
|
||||||
commands.push_back(new cmElseIfCommand);
|
commands.push_back(new cmElseIfCommand);
|
||||||
commands.push_back(new cmEnableLanguageCommand);
|
commands.push_back(new cmEnableLanguageCommand);
|
||||||
commands.push_back(new cmEndWhileCommand);
|
commands.push_back(new cmEndWhileCommand);
|
||||||
commands.push_back(new cmExportCommand);
|
commands.push_back(new cmExportCommand);
|
||||||
commands.push_back(new cmExportLibraryDependenciesCommand);
|
commands.push_back(new cmExportLibraryDependenciesCommand);
|
||||||
commands.push_back(new cmFLTKWrapUICommand);
|
commands.push_back(new cmFLTKWrapUICommand);
|
||||||
commands.push_back(new cmGetPropertyCommand);
|
|
||||||
commands.push_back(new cmGetTestPropertyCommand);
|
commands.push_back(new cmGetTestPropertyCommand);
|
||||||
commands.push_back(new cmIncludeExternalMSProjectCommand);
|
commands.push_back(new cmIncludeExternalMSProjectCommand);
|
||||||
commands.push_back(new cmInstallCommand);
|
commands.push_back(new cmInstallCommand);
|
||||||
|
|
|
@ -3156,7 +3156,6 @@ bool cmMakefile::EnforceUniqueName(std::string const& name, std::string& msg)
|
||||||
msg = e.str();
|
msg = e.str();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
#if 0 /* disable until CTestTargets can be fixed */
|
|
||||||
else if(!this->NeedBackwardsCompatibility(2, 4))
|
else if(!this->NeedBackwardsCompatibility(2, 4))
|
||||||
{
|
{
|
||||||
// The conflict is with a non-imported target. Produce an error
|
// The conflict is with a non-imported target. Produce an error
|
||||||
|
@ -3165,9 +3164,10 @@ bool cmMakefile::EnforceUniqueName(std::string const& name, std::string& msg)
|
||||||
e << "cannot create target \"" << name
|
e << "cannot create target \"" << name
|
||||||
<< "\" because another target with the same name already exists. "
|
<< "\" because another target with the same name already exists. "
|
||||||
<< "Logical target names must be globally unique. "
|
<< "Logical target names must be globally unique. "
|
||||||
<< "Consider using the OUTPUT_NAME target property to create "
|
<< "For executables and libraries, consider using the OUTPUT_NAME "
|
||||||
<< "two targets with the same physical name while keeping logical "
|
<< "target property to create two targets with the same physical "
|
||||||
<< "names distinct.\n"
|
<< "name while keeping logical names distinct. "
|
||||||
|
<< "Custom targets must simply have globally unique names.\n"
|
||||||
<< "If you are building an older project it is possible that "
|
<< "If you are building an older project it is possible that "
|
||||||
<< "it violated this rule but was working accidentally. "
|
<< "it violated this rule but was working accidentally. "
|
||||||
<< "Set CMAKE_BACKWARDS_COMPATIBILITY to 2.4 or lower to disable "
|
<< "Set CMAKE_BACKWARDS_COMPATIBILITY to 2.4 or lower to disable "
|
||||||
|
@ -3175,7 +3175,6 @@ bool cmMakefile::EnforceUniqueName(std::string const& name, std::string& msg)
|
||||||
msg = e.str();
|
msg = e.str();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue