Merge topic 'cmp0037-conditional-targets'

ae5f4069 CMP0037: Allow test and package targets when features are not enabled
409527a0 CMP0037: De-duplicate check and message generation
a2611d81 Tests: Add RunCMake.CMP0037 case for WARN on reserved targets
103501c4 Tests: Do not enable languages in all cases of RunCMake.CMP0037
2d0b3e6e cmGlobalGenerator: 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:
Brad King
2017-10-31 12:19:21 +00:00
committed by Kitware Robot
41 changed files with 342 additions and 146 deletions

View File

@@ -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.

View File

@@ -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.

View File

@@ -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) {

View File

@@ -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);

View File

@@ -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; }

View File

@@ -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();

View File

@@ -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;

View File

@@ -225,6 +225,7 @@ class cmMakefile;
F(CMP0021) \
F(CMP0022) \
F(CMP0027) \
F(CMP0037) \
F(CMP0038) \
F(CMP0041) \
F(CMP0042) \

View File

@@ -1,4 +1,4 @@
enable_language(CXX)
cmake_policy(SET CMP0037 NEW)
add_library("lib:colon" empty.cpp)

View File

@@ -1,4 +1,4 @@
enable_language(CXX)
cmake_policy(SET CMP0037 NEW)
add_library(all empty.cpp)

View File

@@ -1,4 +1,4 @@
enable_language(CXX)
cmake_policy(SET CMP0037 NEW)
add_library("lib with spaces" empty.cpp)

View File

@@ -1,4 +1,4 @@
enable_language(CXX)
cmake_policy(SET CMP0037 OLD)
add_library(all empty.cpp)

View File

@@ -1,4 +1,4 @@
enable_language(CXX)
cmake_policy(SET CMP0037 OLD)
add_library("lib with spaces" empty.cpp)

View File

@@ -1,4 +1,4 @@
enable_language(CXX)
add_library("lib:colon" empty.cpp)
add_executable("exe:colon" empty.cpp)
add_custom_target("custom:colon")

View 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.

View File

@@ -0,0 +1,4 @@
enable_language(CXX)
add_library(all empty.cpp)
add_executable(clean empty.cpp)
add_custom_target(help)

View File

@@ -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")

View File

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

View File

@@ -0,0 +1 @@
1

View 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\)$

View 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)

View File

@@ -0,0 +1 @@
1

View File

@@ -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\)$

View 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)

View File

@@ -0,0 +1 @@
1

View 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\)$

View 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)

View File

@@ -0,0 +1,4 @@
cmake_policy(SET CMP0037 NEW)
add_custom_target(test)
add_custom_target(package)
add_custom_target(package_source)

View 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)

View 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)

View 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)

View File

@@ -0,0 +1,5 @@
cmake_policy(SET CMP0037 OLD)
add_custom_target(test)
add_custom_target(package)
add_custom_target(package_source)

View File

@@ -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()

View 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.$

View 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)

View 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.$

View 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)

View 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.$

View File

@@ -0,0 +1,5 @@
enable_testing()
add_custom_target(test)
add_custom_target(package)
add_custom_target(package_source)

View File

@@ -0,0 +1,4 @@
add_custom_target(test)
add_custom_target(package)
add_custom_target(package_source)

View File

@@ -12,6 +12,7 @@
\* CMP0021
\* CMP0022
\* CMP0027
\* CMP0037
\* CMP0038
\* CMP0041
\* CMP0042