Merge topic 'vs-show-def-files'
e7e713cc VS: Add module definition `.def` files to .vcxproj files (#15313) 247c168b Refactor `.def` file lookup adfc8a67 cmGeneratorTarget: Fix IMPLEMENT_VISIT_IMPL for template data types
This commit is contained in:
commit
49ac682d39
@ -81,7 +81,7 @@ void cmCommonTargetGenerator::AddFeatureFlags(
|
|||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
void cmCommonTargetGenerator::AddModuleDefinitionFlag(std::string& flags)
|
void cmCommonTargetGenerator::AddModuleDefinitionFlag(std::string& flags)
|
||||||
{
|
{
|
||||||
if(this->ModuleDefinitionFile.empty())
|
if(!this->ModuleDefinitionFile)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -98,7 +98,7 @@ void cmCommonTargetGenerator::AddModuleDefinitionFlag(std::string& flags)
|
|||||||
// vs6's "cl -link" pass it to the linker.
|
// vs6's "cl -link" pass it to the linker.
|
||||||
std::string flag = defFileFlag;
|
std::string flag = defFileFlag;
|
||||||
flag += (this->LocalGenerator->ConvertToLinkReference(
|
flag += (this->LocalGenerator->ConvertToLinkReference(
|
||||||
this->ModuleDefinitionFile));
|
this->ModuleDefinitionFile->GetFullPath()));
|
||||||
this->LocalGenerator->AppendFlags(flags, flag);
|
this->LocalGenerator->AppendFlags(flags, flag);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -54,7 +54,7 @@ protected:
|
|||||||
std::string ConfigName;
|
std::string ConfigName;
|
||||||
|
|
||||||
// The windows module definition source file (.def), if any.
|
// The windows module definition source file (.def), if any.
|
||||||
std::string ModuleDefinitionFile;
|
cmSourceFile const* ModuleDefinitionFile;
|
||||||
|
|
||||||
// Target-wide Fortran module output directory.
|
// Target-wide Fortran module output directory.
|
||||||
bool FortranModuleDirectoryComputed;
|
bool FortranModuleDirectoryComputed;
|
||||||
|
@ -573,7 +573,7 @@ static void handleSystemIncludesDep(cmLocalGenerator *lg,
|
|||||||
{ \
|
{ \
|
||||||
std::vector<cmSourceFile*> sourceFiles; \
|
std::vector<cmSourceFile*> sourceFiles; \
|
||||||
this->GetSourceFiles(sourceFiles, config); \
|
this->GetSourceFiles(sourceFiles, config); \
|
||||||
TagVisitor<DATA ## Tag DATATYPE> visitor(this, data); \
|
TagVisitor< DATA##Tag DATATYPE > visitor(this, data); \
|
||||||
for(std::vector<cmSourceFile*>::const_iterator si = sourceFiles.begin(); \
|
for(std::vector<cmSourceFile*>::const_iterator si = sourceFiles.begin(); \
|
||||||
si != sourceFiles.end(); ++si) \
|
si != sourceFiles.end(); ++si) \
|
||||||
{ \
|
{ \
|
||||||
@ -2095,12 +2095,18 @@ cmGeneratorTarget::CompileInfo const* cmGeneratorTarget::GetCompileInfo(
|
|||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
std::string
|
cmSourceFile const*
|
||||||
cmGeneratorTarget::GetModuleDefinitionFile(const std::string& config) const
|
cmGeneratorTarget::GetModuleDefinitionFile(const std::string& config) const
|
||||||
{
|
{
|
||||||
std::string data;
|
std::vector<cmSourceFile const*> data;
|
||||||
IMPLEMENT_VISIT_IMPL(ModuleDefinitionFile, COMMA std::string)
|
IMPLEMENT_VISIT_IMPL(ModuleDefinitionFile,
|
||||||
return data;
|
COMMA std::vector<cmSourceFile const*>)
|
||||||
|
if(!data.empty())
|
||||||
|
{
|
||||||
|
return data.front();
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool cmGeneratorTarget::IsDLLPlatform() const
|
bool cmGeneratorTarget::IsDLLPlatform() const
|
||||||
|
@ -220,7 +220,7 @@ public:
|
|||||||
cmLocalGenerator* LocalGenerator;
|
cmLocalGenerator* LocalGenerator;
|
||||||
cmGlobalGenerator const* GlobalGenerator;
|
cmGlobalGenerator const* GlobalGenerator;
|
||||||
|
|
||||||
std::string GetModuleDefinitionFile(const std::string& config) const;
|
cmSourceFile const* GetModuleDefinitionFile(const std::string& config) const;
|
||||||
|
|
||||||
/** Return whether or not the target is for a DLL platform. */
|
/** Return whether or not the target is for a DLL platform. */
|
||||||
bool IsDLLPlatform() const;
|
bool IsDLLPlatform() const;
|
||||||
|
@ -1497,9 +1497,9 @@ void cmMakefileTargetGenerator
|
|||||||
this->AppendTargetDepends(depends);
|
this->AppendTargetDepends(depends);
|
||||||
|
|
||||||
// Add a dependency on the link definitions file, if any.
|
// Add a dependency on the link definitions file, if any.
|
||||||
if(!this->ModuleDefinitionFile.empty())
|
if(this->ModuleDefinitionFile)
|
||||||
{
|
{
|
||||||
depends.push_back(this->ModuleDefinitionFile);
|
depends.push_back(this->ModuleDefinitionFile->GetFullPath());
|
||||||
}
|
}
|
||||||
|
|
||||||
// Add a dependency on user-specified manifest files, if any.
|
// Add a dependency on user-specified manifest files, if any.
|
||||||
|
@ -195,9 +195,10 @@ cmNinjaDeps cmNinjaTargetGenerator::ComputeLinkDeps() const
|
|||||||
std::transform(deps.begin(), deps.end(), result.begin(), MapToNinjaPath());
|
std::transform(deps.begin(), deps.end(), result.begin(), MapToNinjaPath());
|
||||||
|
|
||||||
// Add a dependency on the link definitions file, if any.
|
// Add a dependency on the link definitions file, if any.
|
||||||
if(!this->ModuleDefinitionFile.empty())
|
if(this->ModuleDefinitionFile)
|
||||||
{
|
{
|
||||||
result.push_back(this->ConvertToNinjaPath(this->ModuleDefinitionFile));
|
result.push_back(this->ConvertToNinjaPath(
|
||||||
|
this->ModuleDefinitionFile->GetFullPath()));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Add a dependency on user-specified manifest files, if any.
|
// Add a dependency on user-specified manifest files, if any.
|
||||||
|
@ -1613,6 +1613,12 @@ void cmVisualStudio10TargetGenerator::WriteAllSources()
|
|||||||
(*this->BuildFileStream ) << cmVS10EscapeXML(obj) << "\" />\n";
|
(*this->BuildFileStream ) << cmVS10EscapeXML(obj) << "\" />\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (cmSourceFile const* defsrc =
|
||||||
|
this->GeneratorTarget->GetModuleDefinitionFile(""))
|
||||||
|
{
|
||||||
|
this->WriteSource("None", defsrc);
|
||||||
|
}
|
||||||
|
|
||||||
if (this->IsMissingFiles)
|
if (this->IsMissingFiles)
|
||||||
{
|
{
|
||||||
this->WriteMissingFiles();
|
this->WriteMissingFiles();
|
||||||
@ -2642,10 +2648,11 @@ cmVisualStudio10TargetGenerator::ComputeLinkOptions(std::string const& config)
|
|||||||
|
|
||||||
if(this->MSTools)
|
if(this->MSTools)
|
||||||
{
|
{
|
||||||
std::string def = this->GeneratorTarget->GetModuleDefinitionFile("");
|
if (cmSourceFile const* defsrc =
|
||||||
if(!def.empty())
|
this->GeneratorTarget->GetModuleDefinitionFile(""))
|
||||||
{
|
{
|
||||||
linkOptions.AddFlag("ModuleDefinitionFile", def.c_str());
|
linkOptions.AddFlag("ModuleDefinitionFile",
|
||||||
|
defsrc->GetFullPath().c_str());
|
||||||
}
|
}
|
||||||
linkOptions.AppendFlag("IgnoreSpecificDefaultLibraries",
|
linkOptions.AppendFlag("IgnoreSpecificDefaultLibraries",
|
||||||
"%(IgnoreSpecificDefaultLibraries)");
|
"%(IgnoreSpecificDefaultLibraries)");
|
||||||
|
Loading…
x
Reference in New Issue
Block a user