mirror of
https://github.com/Kitware/CMake.git
synced 2026-01-05 21:31:08 -06:00
Merge topic 'cmp0037-conditional-targets'
ae5f4069CMP0037: Allow test and package targets when features are not enabled409527a0CMP0037: De-duplicate check and message generationa2611d81Tests: Add RunCMake.CMP0037 case for WARN on reserved targets103501c4Tests: Do not enable languages in all cases of RunCMake.CMP00372d0b3e6ecmGlobalGenerator: Refactor test and package target conditions Acked-by: Kitware Robot <kwrobot@kitware.com> Reviewed-by: Ben Boeckel <ben.boeckel@kitware.com> Merge-request: !1417
This commit is contained in:
@@ -8,7 +8,7 @@
|
||||
#include "cmGeneratorExpression.h"
|
||||
#include "cmGlobalGenerator.h"
|
||||
#include "cmMakefile.h"
|
||||
#include "cmPolicies.h"
|
||||
#include "cmStateTypes.h"
|
||||
#include "cmSystemTools.h"
|
||||
#include "cmTarget.h"
|
||||
#include "cmake.h"
|
||||
@@ -160,35 +160,9 @@ bool cmAddCustomTargetCommand::InitialPass(
|
||||
if (nameOk) {
|
||||
nameOk = targetName.find(':') == std::string::npos;
|
||||
}
|
||||
if (!nameOk) {
|
||||
cmake::MessageType messageType = cmake::AUTHOR_WARNING;
|
||||
std::ostringstream e;
|
||||
bool issueMessage = false;
|
||||
switch (this->Makefile->GetPolicyStatus(cmPolicies::CMP0037)) {
|
||||
case cmPolicies::WARN:
|
||||
e << cmPolicies::GetPolicyWarning(cmPolicies::CMP0037) << "\n";
|
||||
issueMessage = true;
|
||||
case cmPolicies::OLD:
|
||||
break;
|
||||
case cmPolicies::NEW:
|
||||
case cmPolicies::REQUIRED_IF_USED:
|
||||
case cmPolicies::REQUIRED_ALWAYS:
|
||||
issueMessage = true;
|
||||
messageType = cmake::FATAL_ERROR;
|
||||
}
|
||||
if (issueMessage) {
|
||||
/* clang-format off */
|
||||
e << "The target name \"" << targetName <<
|
||||
"\" is reserved or not valid for certain "
|
||||
"CMake features, such as generator expressions, and may result "
|
||||
"in undefined behavior.";
|
||||
/* clang-format on */
|
||||
this->Makefile->IssueMessage(messageType, e.str());
|
||||
|
||||
if (messageType == cmake::FATAL_ERROR) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
if (!nameOk &&
|
||||
!this->Makefile->CheckCMP0037(targetName, cmStateEnums::UTILITY)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Store the last command line finished.
|
||||
|
||||
@@ -7,10 +7,8 @@
|
||||
#include "cmGeneratorExpression.h"
|
||||
#include "cmGlobalGenerator.h"
|
||||
#include "cmMakefile.h"
|
||||
#include "cmPolicies.h"
|
||||
#include "cmStateTypes.h"
|
||||
#include "cmTarget.h"
|
||||
#include "cmake.h"
|
||||
|
||||
class cmExecutionStatus;
|
||||
|
||||
@@ -63,35 +61,9 @@ bool cmAddExecutableCommand::InitialPass(std::vector<std::string> const& args,
|
||||
if (nameOk && !importTarget && !isAlias) {
|
||||
nameOk = exename.find(':') == std::string::npos;
|
||||
}
|
||||
if (!nameOk) {
|
||||
cmake::MessageType messageType = cmake::AUTHOR_WARNING;
|
||||
std::ostringstream e;
|
||||
bool issueMessage = false;
|
||||
switch (this->Makefile->GetPolicyStatus(cmPolicies::CMP0037)) {
|
||||
case cmPolicies::WARN:
|
||||
e << cmPolicies::GetPolicyWarning(cmPolicies::CMP0037) << "\n";
|
||||
issueMessage = true;
|
||||
case cmPolicies::OLD:
|
||||
break;
|
||||
case cmPolicies::NEW:
|
||||
case cmPolicies::REQUIRED_IF_USED:
|
||||
case cmPolicies::REQUIRED_ALWAYS:
|
||||
issueMessage = true;
|
||||
messageType = cmake::FATAL_ERROR;
|
||||
}
|
||||
if (issueMessage) {
|
||||
/* clang-format off */
|
||||
e << "The target name \"" << exename <<
|
||||
"\" is reserved or not valid for certain "
|
||||
"CMake features, such as generator expressions, and may result "
|
||||
"in undefined behavior.";
|
||||
/* clang-format on */
|
||||
this->Makefile->IssueMessage(messageType, e.str());
|
||||
|
||||
if (messageType == cmake::FATAL_ERROR) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
if (!nameOk &&
|
||||
!this->Makefile->CheckCMP0037(exename, cmStateEnums::EXECUTABLE)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Special modifiers are not allowed with IMPORTED signature.
|
||||
|
||||
@@ -7,7 +7,6 @@
|
||||
#include "cmGeneratorExpression.h"
|
||||
#include "cmGlobalGenerator.h"
|
||||
#include "cmMakefile.h"
|
||||
#include "cmPolicies.h"
|
||||
#include "cmState.h"
|
||||
#include "cmStateTypes.h"
|
||||
#include "cmSystemTools.h"
|
||||
@@ -175,35 +174,8 @@ bool cmAddLibraryCommand::InitialPass(std::vector<std::string> const& args,
|
||||
if (nameOk && !importTarget && !isAlias) {
|
||||
nameOk = libName.find(':') == std::string::npos;
|
||||
}
|
||||
if (!nameOk) {
|
||||
cmake::MessageType messageType = cmake::AUTHOR_WARNING;
|
||||
std::ostringstream e;
|
||||
bool issueMessage = false;
|
||||
switch (this->Makefile->GetPolicyStatus(cmPolicies::CMP0037)) {
|
||||
case cmPolicies::WARN:
|
||||
if (type != cmStateEnums::INTERFACE_LIBRARY) {
|
||||
e << cmPolicies::GetPolicyWarning(cmPolicies::CMP0037) << "\n";
|
||||
issueMessage = true;
|
||||
}
|
||||
case cmPolicies::OLD:
|
||||
break;
|
||||
case cmPolicies::NEW:
|
||||
case cmPolicies::REQUIRED_IF_USED:
|
||||
case cmPolicies::REQUIRED_ALWAYS:
|
||||
issueMessage = true;
|
||||
messageType = cmake::FATAL_ERROR;
|
||||
}
|
||||
if (issueMessage) {
|
||||
e << "The target name \"" << libName
|
||||
<< "\" is reserved or not valid for certain "
|
||||
"CMake features, such as generator expressions, and may result "
|
||||
"in undefined behavior.";
|
||||
this->Makefile->IssueMessage(messageType, e.str());
|
||||
|
||||
if (messageType == cmake::FATAL_ERROR) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
if (!nameOk && !this->Makefile->CheckCMP0037(libName, type)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (isAlias) {
|
||||
|
||||
@@ -2220,6 +2220,45 @@ inline std::string removeQuotes(const std::string& s)
|
||||
return s;
|
||||
}
|
||||
|
||||
bool cmGlobalGenerator::CheckCMP0037(std::string const& targetName,
|
||||
std::string const& reason) const
|
||||
{
|
||||
cmTarget* tgt = this->FindTarget(targetName);
|
||||
if (!tgt) {
|
||||
return true;
|
||||
}
|
||||
cmake::MessageType messageType = cmake::AUTHOR_WARNING;
|
||||
std::ostringstream e;
|
||||
bool issueMessage = false;
|
||||
switch (tgt->GetPolicyStatusCMP0037()) {
|
||||
case cmPolicies::WARN:
|
||||
e << cmPolicies::GetPolicyWarning(cmPolicies::CMP0037) << "\n";
|
||||
issueMessage = true;
|
||||
CM_FALLTHROUGH;
|
||||
case cmPolicies::OLD:
|
||||
break;
|
||||
case cmPolicies::NEW:
|
||||
case cmPolicies::REQUIRED_IF_USED:
|
||||
case cmPolicies::REQUIRED_ALWAYS:
|
||||
issueMessage = true;
|
||||
messageType = cmake::FATAL_ERROR;
|
||||
break;
|
||||
}
|
||||
if (issueMessage) {
|
||||
e << "The target name \"" << targetName << "\" is reserved " << reason
|
||||
<< ".";
|
||||
if (messageType == cmake::AUTHOR_WARNING) {
|
||||
e << " It may result in undefined behavior.";
|
||||
}
|
||||
this->GetCMakeInstance()->IssueMessage(messageType, e.str(),
|
||||
tgt->GetBacktrace());
|
||||
if (messageType == cmake::FATAL_ERROR) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
void cmGlobalGenerator::CreateDefaultGlobalTargets(
|
||||
std::vector<GlobalTargetInfo>& targets)
|
||||
{
|
||||
@@ -2235,6 +2274,20 @@ void cmGlobalGenerator::AddGlobalTarget_Package(
|
||||
std::vector<GlobalTargetInfo>& targets)
|
||||
{
|
||||
cmMakefile* mf = this->Makefiles[0];
|
||||
std::string configFile = mf->GetCurrentBinaryDirectory();
|
||||
configFile += "/CPackConfig.cmake";
|
||||
if (!cmSystemTools::FileExists(configFile.c_str())) {
|
||||
return;
|
||||
}
|
||||
|
||||
const char* reservedTargets[] = { "package", "PACKAGE" };
|
||||
for (const char* const* tn = cm::cbegin(reservedTargets);
|
||||
tn != cm::cend(reservedTargets); ++tn) {
|
||||
if (!this->CheckCMP0037(*tn, "when CPack packaging is enabled")) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
const char* cmakeCfgIntDir = this->GetCMakeCFGIntDir();
|
||||
GlobalTargetInfo gti;
|
||||
gti.Name = this->GetPackageTargetName();
|
||||
@@ -2248,8 +2301,6 @@ void cmGlobalGenerator::AddGlobalTarget_Package(
|
||||
singleLine.push_back(cmakeCfgIntDir);
|
||||
}
|
||||
singleLine.push_back("--config");
|
||||
std::string configFile = mf->GetCurrentBinaryDirectory();
|
||||
configFile += "/CPackConfig.cmake";
|
||||
std::string relConfigFile = "./CPackConfig.cmake";
|
||||
singleLine.push_back(relConfigFile);
|
||||
gti.CommandLines.push_back(singleLine);
|
||||
@@ -2262,61 +2313,81 @@ void cmGlobalGenerator::AddGlobalTarget_Package(
|
||||
gti.Depends.push_back(this->GetAllTargetName());
|
||||
}
|
||||
}
|
||||
if (cmSystemTools::FileExists(configFile.c_str())) {
|
||||
targets.push_back(gti);
|
||||
}
|
||||
targets.push_back(gti);
|
||||
}
|
||||
|
||||
void cmGlobalGenerator::AddGlobalTarget_PackageSource(
|
||||
std::vector<GlobalTargetInfo>& targets)
|
||||
{
|
||||
cmMakefile* mf = this->Makefiles[0];
|
||||
const char* packageSourceTargetName = this->GetPackageSourceTargetName();
|
||||
if (packageSourceTargetName) {
|
||||
GlobalTargetInfo gti;
|
||||
gti.Name = packageSourceTargetName;
|
||||
gti.Message = "Run CPack packaging tool for source...";
|
||||
gti.WorkingDir = mf->GetCurrentBinaryDirectory();
|
||||
gti.UsesTerminal = true;
|
||||
cmCustomCommandLine singleLine;
|
||||
singleLine.push_back(cmSystemTools::GetCPackCommand());
|
||||
singleLine.push_back("--config");
|
||||
std::string configFile = mf->GetCurrentBinaryDirectory();
|
||||
configFile += "/CPackSourceConfig.cmake";
|
||||
std::string relConfigFile = "./CPackSourceConfig.cmake";
|
||||
singleLine.push_back(relConfigFile);
|
||||
if (cmSystemTools::FileExists(configFile.c_str())) {
|
||||
singleLine.push_back(configFile);
|
||||
gti.CommandLines.push_back(singleLine);
|
||||
targets.push_back(gti);
|
||||
if (!packageSourceTargetName) {
|
||||
return;
|
||||
}
|
||||
|
||||
cmMakefile* mf = this->Makefiles[0];
|
||||
std::string configFile = mf->GetCurrentBinaryDirectory();
|
||||
configFile += "/CPackSourceConfig.cmake";
|
||||
if (!cmSystemTools::FileExists(configFile.c_str())) {
|
||||
return;
|
||||
}
|
||||
|
||||
const char* reservedTargets[] = { "package_source" };
|
||||
for (const char* const* tn = cm::cbegin(reservedTargets);
|
||||
tn != cm::cend(reservedTargets); ++tn) {
|
||||
if (!this->CheckCMP0037(*tn, "when CPack source packaging is enabled")) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
GlobalTargetInfo gti;
|
||||
gti.Name = packageSourceTargetName;
|
||||
gti.Message = "Run CPack packaging tool for source...";
|
||||
gti.WorkingDir = mf->GetCurrentBinaryDirectory();
|
||||
gti.UsesTerminal = true;
|
||||
cmCustomCommandLine singleLine;
|
||||
singleLine.push_back(cmSystemTools::GetCPackCommand());
|
||||
singleLine.push_back("--config");
|
||||
std::string relConfigFile = "./CPackSourceConfig.cmake";
|
||||
singleLine.push_back(relConfigFile);
|
||||
singleLine.push_back(configFile);
|
||||
gti.CommandLines.push_back(singleLine);
|
||||
targets.push_back(gti);
|
||||
}
|
||||
|
||||
void cmGlobalGenerator::AddGlobalTarget_Test(
|
||||
std::vector<GlobalTargetInfo>& targets)
|
||||
{
|
||||
cmMakefile* mf = this->Makefiles[0];
|
||||
const char* cmakeCfgIntDir = this->GetCMakeCFGIntDir();
|
||||
if (mf->IsOn("CMAKE_TESTING_ENABLED")) {
|
||||
GlobalTargetInfo gti;
|
||||
gti.Name = this->GetTestTargetName();
|
||||
gti.Message = "Running tests...";
|
||||
gti.UsesTerminal = true;
|
||||
cmCustomCommandLine singleLine;
|
||||
singleLine.push_back(cmSystemTools::GetCTestCommand());
|
||||
singleLine.push_back("--force-new-ctest-process");
|
||||
if (cmakeCfgIntDir && *cmakeCfgIntDir && cmakeCfgIntDir[0] != '.') {
|
||||
singleLine.push_back("-C");
|
||||
singleLine.push_back(cmakeCfgIntDir);
|
||||
} else // TODO: This is a hack. Should be something to do with the
|
||||
// generator
|
||||
{
|
||||
singleLine.push_back("$(ARGS)");
|
||||
}
|
||||
gti.CommandLines.push_back(singleLine);
|
||||
targets.push_back(gti);
|
||||
if (!mf->IsOn("CMAKE_TESTING_ENABLED")) {
|
||||
return;
|
||||
}
|
||||
|
||||
const char* reservedTargets[] = { "test", "RUN_TESTS" };
|
||||
for (const char* const* tn = cm::cbegin(reservedTargets);
|
||||
tn != cm::cend(reservedTargets); ++tn) {
|
||||
if (!this->CheckCMP0037(*tn, "when CTest testing is enabled")) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
const char* cmakeCfgIntDir = this->GetCMakeCFGIntDir();
|
||||
GlobalTargetInfo gti;
|
||||
gti.Name = this->GetTestTargetName();
|
||||
gti.Message = "Running tests...";
|
||||
gti.UsesTerminal = true;
|
||||
cmCustomCommandLine singleLine;
|
||||
singleLine.push_back(cmSystemTools::GetCTestCommand());
|
||||
singleLine.push_back("--force-new-ctest-process");
|
||||
if (cmakeCfgIntDir && *cmakeCfgIntDir && cmakeCfgIntDir[0] != '.') {
|
||||
singleLine.push_back("-C");
|
||||
singleLine.push_back(cmakeCfgIntDir);
|
||||
} else // TODO: This is a hack. Should be something to do with the
|
||||
// generator
|
||||
{
|
||||
singleLine.push_back("$(ARGS)");
|
||||
}
|
||||
gti.CommandLines.push_back(singleLine);
|
||||
targets.push_back(gti);
|
||||
}
|
||||
|
||||
void cmGlobalGenerator::AddGlobalTarget_EditCache(
|
||||
@@ -2582,11 +2653,10 @@ bool cmGlobalGenerator::IsReservedTarget(std::string const& name)
|
||||
// by one or more of the cmake generators.
|
||||
|
||||
// Adding additional targets to this list will require a policy!
|
||||
const char* reservedTargets[] = {
|
||||
"all", "ALL_BUILD", "help", "install", "INSTALL",
|
||||
"preinstall", "clean", "edit_cache", "rebuild_cache", "test",
|
||||
"RUN_TESTS", "package", "PACKAGE", "package_source", "ZERO_CHECK"
|
||||
};
|
||||
const char* reservedTargets[] = { "all", "ALL_BUILD", "help",
|
||||
"install", "INSTALL", "preinstall",
|
||||
"clean", "edit_cache", "rebuild_cache",
|
||||
"ZERO_CHECK" };
|
||||
|
||||
return std::find(cm::cbegin(reservedTargets), cm::cend(reservedTargets),
|
||||
name) != cm::cend(reservedTargets);
|
||||
|
||||
@@ -568,6 +568,9 @@ private:
|
||||
|
||||
void ClearGeneratorMembers();
|
||||
|
||||
bool CheckCMP0037(std::string const& targetName,
|
||||
std::string const& reason) const;
|
||||
|
||||
void IndexMakefile(cmMakefile* mf);
|
||||
|
||||
virtual const char* GetBuildIgnoreErrorsFlag() const { return nullptr; }
|
||||
|
||||
@@ -123,6 +123,42 @@ void cmMakefile::IssueMessage(cmake::MessageType t,
|
||||
this->GetCMakeInstance()->IssueMessage(t, text, this->GetBacktrace());
|
||||
}
|
||||
|
||||
bool cmMakefile::CheckCMP0037(std::string const& targetName,
|
||||
cmStateEnums::TargetType targetType) const
|
||||
{
|
||||
cmake::MessageType messageType = cmake::AUTHOR_WARNING;
|
||||
std::ostringstream e;
|
||||
bool issueMessage = false;
|
||||
switch (this->GetPolicyStatus(cmPolicies::CMP0037)) {
|
||||
case cmPolicies::WARN:
|
||||
if (targetType != cmStateEnums::INTERFACE_LIBRARY) {
|
||||
e << cmPolicies::GetPolicyWarning(cmPolicies::CMP0037) << "\n";
|
||||
issueMessage = true;
|
||||
}
|
||||
CM_FALLTHROUGH;
|
||||
case cmPolicies::OLD:
|
||||
break;
|
||||
case cmPolicies::NEW:
|
||||
case cmPolicies::REQUIRED_IF_USED:
|
||||
case cmPolicies::REQUIRED_ALWAYS:
|
||||
issueMessage = true;
|
||||
messageType = cmake::FATAL_ERROR;
|
||||
break;
|
||||
}
|
||||
if (issueMessage) {
|
||||
e << "The target name \"" << targetName
|
||||
<< "\" is reserved or not valid for certain "
|
||||
"CMake features, such as generator expressions, and may result "
|
||||
"in undefined behavior.";
|
||||
this->IssueMessage(messageType, e.str());
|
||||
|
||||
if (messageType == cmake::FATAL_ERROR) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
cmStringRange cmMakefile::GetIncludeDirectoriesEntries() const
|
||||
{
|
||||
return this->StateSnapshot.GetDirectory().GetIncludeDirectoriesEntries();
|
||||
|
||||
@@ -741,6 +741,9 @@ public:
|
||||
/** Set whether or not to report a CMP0000 violation. */
|
||||
void SetCheckCMP0000(bool b) { this->CheckCMP0000 = b; }
|
||||
|
||||
bool CheckCMP0037(std::string const& targetName,
|
||||
cmStateEnums::TargetType targetType) const;
|
||||
|
||||
cmStringRange GetIncludeDirectoriesEntries() const;
|
||||
cmBacktraceRange GetIncludeDirectoriesBacktraces() const;
|
||||
cmStringRange GetCompileOptionsEntries() const;
|
||||
|
||||
@@ -225,6 +225,7 @@ class cmMakefile;
|
||||
F(CMP0021) \
|
||||
F(CMP0022) \
|
||||
F(CMP0027) \
|
||||
F(CMP0037) \
|
||||
F(CMP0038) \
|
||||
F(CMP0041) \
|
||||
F(CMP0042) \
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
|
||||
enable_language(CXX)
|
||||
cmake_policy(SET CMP0037 NEW)
|
||||
|
||||
add_library("lib:colon" empty.cpp)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
|
||||
enable_language(CXX)
|
||||
cmake_policy(SET CMP0037 NEW)
|
||||
|
||||
add_library(all empty.cpp)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
|
||||
enable_language(CXX)
|
||||
cmake_policy(SET CMP0037 NEW)
|
||||
|
||||
add_library("lib with spaces" empty.cpp)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
|
||||
enable_language(CXX)
|
||||
cmake_policy(SET CMP0037 OLD)
|
||||
|
||||
add_library(all empty.cpp)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
|
||||
enable_language(CXX)
|
||||
cmake_policy(SET CMP0037 OLD)
|
||||
|
||||
add_library("lib with spaces" empty.cpp)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
|
||||
enable_language(CXX)
|
||||
add_library("lib:colon" empty.cpp)
|
||||
add_executable("exe:colon" empty.cpp)
|
||||
add_custom_target("custom:colon")
|
||||
|
||||
36
Tests/RunCMake/CMP0037/CMP0037-WARN-reserved-stderr.txt
Normal file
36
Tests/RunCMake/CMP0037/CMP0037-WARN-reserved-stderr.txt
Normal file
@@ -0,0 +1,36 @@
|
||||
CMake Warning \(dev\) at CMP0037-WARN-reserved.cmake:2 \(add_library\):
|
||||
Policy CMP0037 is not set: Target names should not be reserved and should
|
||||
match a validity pattern. Run "cmake --help-policy CMP0037" for policy
|
||||
details. Use the cmake_policy command to set the policy and suppress this
|
||||
warning.
|
||||
|
||||
The target name "all" is reserved or not valid for certain CMake features,
|
||||
such as generator expressions, and may result in undefined behavior.
|
||||
Call Stack \(most recent call first\):
|
||||
CMakeLists.txt:3 \(include\)
|
||||
This warning is for project developers. Use -Wno-dev to suppress it.
|
||||
+
|
||||
CMake Warning \(dev\) at CMP0037-WARN-reserved.cmake:3 \(add_executable\):
|
||||
Policy CMP0037 is not set: Target names should not be reserved and should
|
||||
match a validity pattern. Run "cmake --help-policy CMP0037" for policy
|
||||
details. Use the cmake_policy command to set the policy and suppress this
|
||||
warning.
|
||||
|
||||
The target name "clean" is reserved or not valid for certain CMake
|
||||
features, such as generator expressions, and may result in undefined
|
||||
behavior.
|
||||
Call Stack \(most recent call first\):
|
||||
CMakeLists.txt:3 \(include\)
|
||||
This warning is for project developers. Use -Wno-dev to suppress it.
|
||||
+
|
||||
CMake Warning \(dev\) at CMP0037-WARN-reserved.cmake:4 \(add_custom_target\):
|
||||
Policy CMP0037 is not set: Target names should not be reserved and should
|
||||
match a validity pattern. Run "cmake --help-policy CMP0037" for policy
|
||||
details. Use the cmake_policy command to set the policy and suppress this
|
||||
warning.
|
||||
|
||||
The target name "help" is reserved or not valid for certain CMake features,
|
||||
such as generator expressions, and may result in undefined behavior.
|
||||
Call Stack \(most recent call first\):
|
||||
CMakeLists.txt:3 \(include\)
|
||||
This warning is for project developers. Use -Wno-dev to suppress it.
|
||||
4
Tests/RunCMake/CMP0037/CMP0037-WARN-reserved.cmake
Normal file
4
Tests/RunCMake/CMP0037/CMP0037-WARN-reserved.cmake
Normal file
@@ -0,0 +1,4 @@
|
||||
enable_language(CXX)
|
||||
add_library(all empty.cpp)
|
||||
add_executable(clean empty.cpp)
|
||||
add_custom_target(help)
|
||||
@@ -1,4 +1,4 @@
|
||||
|
||||
enable_language(CXX)
|
||||
add_library("lib with spaces" empty.cpp)
|
||||
add_executable("exe with spaces" empty.cpp)
|
||||
add_custom_target("custom with spaces")
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
cmake_minimum_required(VERSION 2.8.4)
|
||||
project(${RunCMake_TEST} CXX)
|
||||
project(${RunCMake_TEST} NONE)
|
||||
include(${RunCMake_TEST}.cmake)
|
||||
|
||||
1
Tests/RunCMake/CMP0037/NEW-cond-package-result.txt
Normal file
1
Tests/RunCMake/CMP0037/NEW-cond-package-result.txt
Normal file
@@ -0,0 +1 @@
|
||||
1
|
||||
4
Tests/RunCMake/CMP0037/NEW-cond-package-stderr.txt
Normal file
4
Tests/RunCMake/CMP0037/NEW-cond-package-stderr.txt
Normal file
@@ -0,0 +1,4 @@
|
||||
^CMake Error at NEW-cond-package.cmake:4 \(add_custom_target\):
|
||||
The target name "package" is reserved when CPack packaging is enabled.
|
||||
Call Stack \(most recent call first\):
|
||||
CMakeLists.txt:3 \(include\)$
|
||||
5
Tests/RunCMake/CMP0037/NEW-cond-package.cmake
Normal file
5
Tests/RunCMake/CMP0037/NEW-cond-package.cmake
Normal file
@@ -0,0 +1,5 @@
|
||||
cmake_policy(SET CMP0037 NEW)
|
||||
file(WRITE "${CMAKE_BINARY_DIR}/CPackConfig.cmake" "")
|
||||
add_custom_target(test)
|
||||
add_custom_target(package)
|
||||
add_custom_target(package_source)
|
||||
@@ -0,0 +1 @@
|
||||
1
|
||||
@@ -0,0 +1,5 @@
|
||||
^CMake Error at NEW-cond-package_source.cmake:5 \(add_custom_target\):
|
||||
The target name "package_source" is reserved when CPack source packaging is
|
||||
enabled.
|
||||
Call Stack \(most recent call first\):
|
||||
CMakeLists.txt:3 \(include\)$
|
||||
5
Tests/RunCMake/CMP0037/NEW-cond-package_source.cmake
Normal file
5
Tests/RunCMake/CMP0037/NEW-cond-package_source.cmake
Normal file
@@ -0,0 +1,5 @@
|
||||
cmake_policy(SET CMP0037 NEW)
|
||||
file(WRITE "${CMAKE_BINARY_DIR}/CPackSourceConfig.cmake" "")
|
||||
add_custom_target(test)
|
||||
add_custom_target(package)
|
||||
add_custom_target(package_source)
|
||||
1
Tests/RunCMake/CMP0037/NEW-cond-test-result.txt
Normal file
1
Tests/RunCMake/CMP0037/NEW-cond-test-result.txt
Normal file
@@ -0,0 +1 @@
|
||||
1
|
||||
4
Tests/RunCMake/CMP0037/NEW-cond-test-stderr.txt
Normal file
4
Tests/RunCMake/CMP0037/NEW-cond-test-stderr.txt
Normal file
@@ -0,0 +1,4 @@
|
||||
^CMake Error at NEW-cond-test.cmake:3 \(add_custom_target\):
|
||||
The target name "test" is reserved when CTest testing is enabled.
|
||||
Call Stack \(most recent call first\):
|
||||
CMakeLists.txt:3 \(include\)$
|
||||
5
Tests/RunCMake/CMP0037/NEW-cond-test.cmake
Normal file
5
Tests/RunCMake/CMP0037/NEW-cond-test.cmake
Normal file
@@ -0,0 +1,5 @@
|
||||
cmake_policy(SET CMP0037 NEW)
|
||||
enable_testing()
|
||||
add_custom_target(test)
|
||||
add_custom_target(package)
|
||||
add_custom_target(package_source)
|
||||
4
Tests/RunCMake/CMP0037/NEW-cond.cmake
Normal file
4
Tests/RunCMake/CMP0037/NEW-cond.cmake
Normal file
@@ -0,0 +1,4 @@
|
||||
cmake_policy(SET CMP0037 NEW)
|
||||
add_custom_target(test)
|
||||
add_custom_target(package)
|
||||
add_custom_target(package_source)
|
||||
5
Tests/RunCMake/CMP0037/OLD-cond-package.cmake
Normal file
5
Tests/RunCMake/CMP0037/OLD-cond-package.cmake
Normal file
@@ -0,0 +1,5 @@
|
||||
cmake_policy(SET CMP0037 OLD)
|
||||
file(WRITE "${CMAKE_BINARY_DIR}/CPackConfig.cmake" "")
|
||||
add_custom_target(test)
|
||||
add_custom_target(package)
|
||||
add_custom_target(package_source)
|
||||
5
Tests/RunCMake/CMP0037/OLD-cond-package_source.cmake
Normal file
5
Tests/RunCMake/CMP0037/OLD-cond-package_source.cmake
Normal file
@@ -0,0 +1,5 @@
|
||||
cmake_policy(SET CMP0037 OLD)
|
||||
file(WRITE "${CMAKE_BINARY_DIR}/CPackSourceConfig.cmake" "")
|
||||
add_custom_target(test)
|
||||
add_custom_target(package)
|
||||
add_custom_target(package_source)
|
||||
5
Tests/RunCMake/CMP0037/OLD-cond-test.cmake
Normal file
5
Tests/RunCMake/CMP0037/OLD-cond-test.cmake
Normal file
@@ -0,0 +1,5 @@
|
||||
cmake_policy(SET CMP0037 OLD)
|
||||
enable_testing()
|
||||
add_custom_target(test)
|
||||
add_custom_target(package)
|
||||
add_custom_target(package_source)
|
||||
5
Tests/RunCMake/CMP0037/OLD-cond.cmake
Normal file
5
Tests/RunCMake/CMP0037/OLD-cond.cmake
Normal file
@@ -0,0 +1,5 @@
|
||||
cmake_policy(SET CMP0037 OLD)
|
||||
|
||||
add_custom_target(test)
|
||||
add_custom_target(package)
|
||||
add_custom_target(package_source)
|
||||
@@ -9,5 +9,22 @@ if(NOT (WIN32 AND "${RunCMake_GENERATOR}" MATCHES "Make"))
|
||||
run_cmake(CMP0037-WARN-colon)
|
||||
endif()
|
||||
|
||||
run_cmake(CMP0037-WARN-reserved)
|
||||
run_cmake(CMP0037-OLD-reserved)
|
||||
run_cmake(CMP0037-NEW-reserved)
|
||||
|
||||
run_cmake(NEW-cond)
|
||||
run_cmake(NEW-cond-test)
|
||||
run_cmake(NEW-cond-package)
|
||||
run_cmake(OLD-cond)
|
||||
run_cmake(OLD-cond-test)
|
||||
run_cmake(OLD-cond-package)
|
||||
run_cmake(WARN-cond)
|
||||
run_cmake(WARN-cond-test)
|
||||
run_cmake(WARN-cond-package)
|
||||
|
||||
if(RunCMake_GENERATOR MATCHES "Make|Ninja")
|
||||
run_cmake(NEW-cond-package_source)
|
||||
run_cmake(OLD-cond-package_source)
|
||||
run_cmake(WARN-cond-package_source)
|
||||
endif()
|
||||
|
||||
11
Tests/RunCMake/CMP0037/WARN-cond-package-stderr.txt
Normal file
11
Tests/RunCMake/CMP0037/WARN-cond-package-stderr.txt
Normal file
@@ -0,0 +1,11 @@
|
||||
^CMake Warning \(dev\) at WARN-cond-package.cmake:4 \(add_custom_target\):
|
||||
Policy CMP0037 is not set: Target names should not be reserved and should
|
||||
match a validity pattern. Run "cmake --help-policy CMP0037" for policy
|
||||
details. Use the cmake_policy command to set the policy and suppress this
|
||||
warning.
|
||||
|
||||
The target name "package" is reserved when CPack packaging is enabled. It
|
||||
may result in undefined behavior.
|
||||
Call Stack \(most recent call first\):
|
||||
CMakeLists.txt:3 \(include\)
|
||||
This warning is for project developers. Use -Wno-dev to suppress it.$
|
||||
5
Tests/RunCMake/CMP0037/WARN-cond-package.cmake
Normal file
5
Tests/RunCMake/CMP0037/WARN-cond-package.cmake
Normal file
@@ -0,0 +1,5 @@
|
||||
|
||||
file(WRITE "${CMAKE_BINARY_DIR}/CPackConfig.cmake" "")
|
||||
add_custom_target(test)
|
||||
add_custom_target(package)
|
||||
add_custom_target(package_source)
|
||||
11
Tests/RunCMake/CMP0037/WARN-cond-package_source-stderr.txt
Normal file
11
Tests/RunCMake/CMP0037/WARN-cond-package_source-stderr.txt
Normal file
@@ -0,0 +1,11 @@
|
||||
^CMake Warning \(dev\) at WARN-cond-package_source.cmake:5 \(add_custom_target\):
|
||||
Policy CMP0037 is not set: Target names should not be reserved and should
|
||||
match a validity pattern. Run "cmake --help-policy CMP0037" for policy
|
||||
details. Use the cmake_policy command to set the policy and suppress this
|
||||
warning.
|
||||
|
||||
The target name "package_source" is reserved when CPack source packaging is
|
||||
enabled. It may result in undefined behavior.
|
||||
Call Stack \(most recent call first\):
|
||||
CMakeLists.txt:3 \(include\)
|
||||
This warning is for project developers. Use -Wno-dev to suppress it.$
|
||||
5
Tests/RunCMake/CMP0037/WARN-cond-package_source.cmake
Normal file
5
Tests/RunCMake/CMP0037/WARN-cond-package_source.cmake
Normal file
@@ -0,0 +1,5 @@
|
||||
|
||||
file(WRITE "${CMAKE_BINARY_DIR}/CPackSourceConfig.cmake" "")
|
||||
add_custom_target(test)
|
||||
add_custom_target(package)
|
||||
add_custom_target(package_source)
|
||||
11
Tests/RunCMake/CMP0037/WARN-cond-test-stderr.txt
Normal file
11
Tests/RunCMake/CMP0037/WARN-cond-test-stderr.txt
Normal file
@@ -0,0 +1,11 @@
|
||||
^CMake Warning \(dev\) at WARN-cond-test.cmake:3 \(add_custom_target\):
|
||||
Policy CMP0037 is not set: Target names should not be reserved and should
|
||||
match a validity pattern. Run "cmake --help-policy CMP0037" for policy
|
||||
details. Use the cmake_policy command to set the policy and suppress this
|
||||
warning.
|
||||
|
||||
The target name "test" is reserved when CTest testing is enabled. It may
|
||||
result in undefined behavior.
|
||||
Call Stack \(most recent call first\):
|
||||
CMakeLists.txt:3 \(include\)
|
||||
This warning is for project developers. Use -Wno-dev to suppress it.$
|
||||
5
Tests/RunCMake/CMP0037/WARN-cond-test.cmake
Normal file
5
Tests/RunCMake/CMP0037/WARN-cond-test.cmake
Normal file
@@ -0,0 +1,5 @@
|
||||
|
||||
enable_testing()
|
||||
add_custom_target(test)
|
||||
add_custom_target(package)
|
||||
add_custom_target(package_source)
|
||||
4
Tests/RunCMake/CMP0037/WARN-cond.cmake
Normal file
4
Tests/RunCMake/CMP0037/WARN-cond.cmake
Normal file
@@ -0,0 +1,4 @@
|
||||
|
||||
add_custom_target(test)
|
||||
add_custom_target(package)
|
||||
add_custom_target(package_source)
|
||||
@@ -12,6 +12,7 @@
|
||||
\* CMP0021
|
||||
\* CMP0022
|
||||
\* CMP0027
|
||||
\* CMP0037
|
||||
\* CMP0038
|
||||
\* CMP0041
|
||||
\* CMP0042
|
||||
|
||||
Reference in New Issue
Block a user