Merge topic 'fix-CMP0024-multiple-directories'
af1f698
CMP0024: Store the fact of included export in global generator.
This commit is contained in:
commit
ebffbda447
|
@ -172,7 +172,9 @@ bool cmExportCommand
|
|||
ebfg.SetCommand(this);
|
||||
ebfg.SetExportOld(this->ExportOld.IsEnabled());
|
||||
|
||||
this->Makefile->AddExportedTargetsFile(fname);
|
||||
cmGlobalGenerator *gg = this->Makefile->GetLocalGenerator()
|
||||
->GetGlobalGenerator();
|
||||
gg->AddExportedTargetsFile(fname);
|
||||
|
||||
// Compute the set of configurations exported.
|
||||
std::vector<std::string> configurationTypes;
|
||||
|
|
|
@ -293,6 +293,18 @@ public:
|
|||
|
||||
void ProcessEvaluationFiles();
|
||||
|
||||
void AddExportedTargetsFile(const std::string &filename)
|
||||
{
|
||||
this->ExportedTargetsFiles.insert(filename);
|
||||
}
|
||||
|
||||
bool IsExportedTargetsFile(const std::string &filename) const
|
||||
{
|
||||
const std::set<std::string>::const_iterator it
|
||||
= this->ExportedTargetsFiles.find(filename);
|
||||
return it != this->ExportedTargetsFiles.end();
|
||||
}
|
||||
|
||||
protected:
|
||||
typedef std::vector<cmLocalGenerator*> GeneratorVector;
|
||||
// for a project collect all its targets by following depend
|
||||
|
@ -372,6 +384,7 @@ private:
|
|||
std::map<cmStdString, cmStdString> ExtensionToLanguage;
|
||||
std::map<cmStdString, int> LanguageToLinkerPreference;
|
||||
std::map<cmStdString, cmStdString> LanguageToOriginalSharedLibFlags;
|
||||
std::set<std::string> ExportedTargetsFiles;
|
||||
|
||||
// Record hashes for rules and outputs.
|
||||
struct RuleHash { char Data[32]; };
|
||||
|
|
|
@ -93,7 +93,9 @@ bool cmIncludeCommand
|
|||
cmSystemTools::CollapseFullPath(fname.c_str(),
|
||||
this->Makefile->GetStartDirectory());
|
||||
|
||||
if (this->Makefile->IsExportedTargetsFile(fname_abs))
|
||||
cmGlobalGenerator *gg = this->Makefile->GetLocalGenerator()
|
||||
->GetGlobalGenerator();
|
||||
if (gg->IsExportedTargetsFile(fname_abs))
|
||||
{
|
||||
const char *modal = 0;
|
||||
cmake::MessageType messageType = cmake::AUTHOR_WARNING;
|
||||
|
|
|
@ -489,18 +489,6 @@ public:
|
|||
return this->cmCurrentListFile.c_str();
|
||||
}
|
||||
|
||||
void AddExportedTargetsFile(const std::string &filename)
|
||||
{
|
||||
this->ExportedTargetsFiles.insert(filename);
|
||||
}
|
||||
|
||||
bool IsExportedTargetsFile(const std::string &filename) const
|
||||
{
|
||||
const std::set<std::string>::const_iterator it
|
||||
= this->ExportedTargetsFiles.find(filename);
|
||||
return it != this->ExportedTargetsFiles.end();
|
||||
}
|
||||
|
||||
//@}
|
||||
|
||||
/**
|
||||
|
@ -1053,7 +1041,6 @@ private:
|
|||
void EnforceDirectoryLevelRules();
|
||||
|
||||
bool GeneratingBuildSystem;
|
||||
std::set<std::string> ExportedTargetsFiles;
|
||||
/**
|
||||
* Old version of GetSourceFileWithOutput(const char*) kept for
|
||||
* backward-compatibility. It implements a linear search and support
|
||||
|
|
|
@ -1,15 +1,12 @@
|
|||
CMake Error at CMP0024-NEW.cmake:9 \(include\):
|
||||
CMake Error at subdir2/CMakeLists.txt:2 \(include\):
|
||||
Policy CMP0024 is not set: Disallow include export result. Run "cmake
|
||||
--help-policy CMP0024" for policy details. Use the cmake_policy command to
|
||||
set the policy and suppress this warning.
|
||||
|
||||
The file
|
||||
|
||||
.*/Tests/RunCMake/include/CMP0024-NEW-build/theTargets.cmake
|
||||
.*/Tests/RunCMake/include/CMP0024-NEW-build/subdir1/theTargets.cmake
|
||||
|
||||
was generated by the export\(\) command. It may not be used as the argument
|
||||
to the include\(\) command. Use ALIAS targets instead to refer to targets by
|
||||
alternative names.
|
||||
|
||||
Call Stack \(most recent call first\):
|
||||
CMakeLists.txt:3 \(include\)
|
||||
|
|
|
@ -5,5 +5,5 @@ cmake_policy(SET CMP0024 NEW)
|
|||
|
||||
add_library(foo SHARED empty.cpp)
|
||||
|
||||
export(TARGETS foo FILE "${CMAKE_CURRENT_BINARY_DIR}/theTargets.cmake")
|
||||
include("${CMAKE_CURRENT_BINARY_DIR}/theTargets.cmake")
|
||||
add_subdirectory(subdir1)
|
||||
add_subdirectory(subdir2)
|
||||
|
|
|
@ -1,16 +1,14 @@
|
|||
CMake Warning \(dev\) at CMP0024-WARN.cmake:7 \(include\):
|
||||
CMake Warning \(dev\) at subdir2/CMakeLists.txt:2 \(include\):
|
||||
Policy CMP0024 is not set: Disallow include export result. Run "cmake
|
||||
--help-policy CMP0024" for policy details. Use the cmake_policy command to
|
||||
set the policy and suppress this warning.
|
||||
|
||||
The file
|
||||
|
||||
.*/Tests/RunCMake/include/CMP0024-WARN-build/theTargets.cmake
|
||||
.*/Tests/RunCMake/include/CMP0024-WARN-build/subdir1/theTargets.cmake
|
||||
|
||||
was generated by the export\(\) command. It should not be used as the
|
||||
argument to the include\(\) command. Use ALIAS targets instead to refer to
|
||||
targets by alternative names.
|
||||
|
||||
Call Stack \(most recent call first\):
|
||||
CMakeLists.txt:3 \(include\)
|
||||
This warning is for project developers. Use -Wno-dev to suppress it.
|
||||
|
|
|
@ -3,5 +3,5 @@ enable_language(CXX)
|
|||
|
||||
add_library(foo SHARED empty.cpp)
|
||||
|
||||
export(TARGETS foo FILE "${CMAKE_CURRENT_BINARY_DIR}/theTargets.cmake")
|
||||
include("${CMAKE_CURRENT_BINARY_DIR}/theTargets.cmake")
|
||||
add_subdirectory(subdir1)
|
||||
add_subdirectory(subdir2)
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
|
||||
export(TARGETS foo FILE "${CMAKE_CURRENT_BINARY_DIR}/theTargets.cmake")
|
|
@ -0,0 +1,2 @@
|
|||
|
||||
include("${CMAKE_CURRENT_BINARY_DIR}/../subdir1/theTargets.cmake")
|
Loading…
Reference in New Issue