mirror of
https://github.com/Kitware/CMake.git
synced 2026-02-22 06:59:01 -06:00
ENH: Implemented link-interface specification feature.
- Shared libs and executables with exports may now have
explicit transitive link dependencies specified
- Created LINK_INTERFACE_LIBRARIES and related properties
- Exported targets get the interface libraries as their
IMPORTED_LINK_LIBRARIES property.
- The export() and install(EXPORT) commands now give
an error when a linked target is not included since
the user can change the interface libraries instead
of adding the target.
This commit is contained in:
@@ -16,6 +16,14 @@
|
||||
=========================================================================*/
|
||||
#include "cmExportBuildFileGenerator.h"
|
||||
|
||||
#include "cmExportCommand.h"
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
cmExportBuildFileGenerator::cmExportBuildFileGenerator()
|
||||
{
|
||||
this->ExportCommand = 0;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool cmExportBuildFileGenerator::GenerateMainFile(std::ostream& os)
|
||||
{
|
||||
@@ -116,9 +124,19 @@ void
|
||||
cmExportBuildFileGenerator
|
||||
::ComplainAboutMissingTarget(cmTarget* target, const char* dep)
|
||||
{
|
||||
if(!this->ExportCommand || !this->ExportCommand->ErrorMessage.empty())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
cmOStringStream e;
|
||||
e << "WARNING: EXPORT(...) includes target " << target->GetName()
|
||||
<< " which links to target \"" << dep
|
||||
<< "\" that is not in the export set.";
|
||||
cmSystemTools::Message(e.str().c_str());
|
||||
e << "called with target \"" << target->GetName()
|
||||
<< "\" which links to target \"" << dep
|
||||
<< "\" that is not in the export list.\n"
|
||||
<< "If the link dependency is not part of the public interface "
|
||||
<< "consider setting the LINK_INTERFACE_LIBRARIES property on \""
|
||||
<< target->GetName() << "\". Otherwise add it to the export list. "
|
||||
<< "If the link dependency is not easy to reference in this call, "
|
||||
<< "consider using the APPEND option with multiple separate calls.";
|
||||
this->ExportCommand->ErrorMessage = e.str();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user