CMake/Source/cmAddDependenciesCommand.h
Brad King e01cce2869 Allow add_dependencies() on imported targets (#10395)
Imported targets do not themselves build, but we can follow dependencies
through them to find real targets.  This allows imported targets to
depend on custom targets that provide the underlying files at build
time.
2010-11-19 17:19:21 -05:00

79 lines
2.5 KiB
C++

/*============================================================================
CMake - Cross Platform Makefile Generator
Copyright 2000-2009 Kitware, Inc., Insight Software Consortium
Distributed under the OSI-approved BSD License (the "License");
see accompanying file Copyright.txt for details.
This software is distributed WITHOUT ANY WARRANTY; without even the
implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the License for more information.
============================================================================*/
#ifndef cmDependenciessCommand_h
#define cmDependenciessCommand_h
#include "cmCommand.h"
/** \class cmAddDependenciesCommand
* \brief Add a dependency to a target
*
* cmAddDependenciesCommand adds a dependency to a target
*/
class cmAddDependenciesCommand : public cmCommand
{
public:
/**
* This is a virtual constructor for the command.
*/
virtual cmCommand* Clone()
{
return new cmAddDependenciesCommand;
}
/**
* This is called when the command is first encountered in
* the CMakeLists.txt file.
*/
virtual bool InitialPass(std::vector<std::string> const& args,
cmExecutionStatus &status);
/**
* The name of the command as specified in CMakeList.txt.
*/
virtual const char* GetName() { return "add_dependencies";}
/**
* Succinct documentation.
*/
virtual const char* GetTerseDocumentation()
{
return "Add a dependency between top-level targets.";
}
/**
* More documentation.
*/
virtual const char* GetFullDocumentation()
{
return
" add_dependencies(target-name depend-target1\n"
" depend-target2 ...)\n"
"Make a top-level target depend on other top-level targets. A "
"top-level target is one created by ADD_EXECUTABLE, ADD_LIBRARY, "
"or ADD_CUSTOM_TARGET. Adding dependencies with this command "
"can be used to make sure one target is built before another target. "
"Dependencies added to an IMPORTED target are followed transitively "
"in its place since the target itself does not build. "
"See the DEPENDS option of ADD_CUSTOM_TARGET "
"and ADD_CUSTOM_COMMAND for adding file-level dependencies in custom "
"rules. See the OBJECT_DEPENDS option in "
"SET_SOURCE_FILES_PROPERTIES to add file-level dependencies to object "
"files.";
}
cmTypeMacro(cmAddDependenciesCommand, cmCommand);
};
#endif