/*============================================================================ 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 cmAddSubDirectoryCommand_h #define cmAddSubDirectoryCommand_h #include "cmCommand.h" /** \class cmAddSubDirectoryCommand * \brief Specify a subdirectory to build * * cmAddSubDirectoryCommand specifies a subdirectory to process * by CMake. CMake will descend * into the specified source directory and process any CMakeLists.txt found. */ class cmAddSubDirectoryCommand : public cmCommand { public: /** * This is a virtual constructor for the command. */ virtual cmCommand* Clone() { return new cmAddSubDirectoryCommand; } /** * This is called when the command is first encountered in * the CMakeLists.txt file. */ virtual bool InitialPass(std::vector const& args, cmExecutionStatus &status); /** * The name of the command as specified in CMakeList.txt. */ virtual const char* GetName() const { return "add_subdirectory";} /** * Succinct documentation. */ virtual const char* GetTerseDocumentation() const { return "Add a subdirectory to the build."; } /** * More documentation. */ virtual const char* GetFullDocumentation() const { return " add_subdirectory(source_dir [binary_dir] \n" " [EXCLUDE_FROM_ALL])\n" "Add a subdirectory to the build. The source_dir specifies the " "directory in which the source CmakeLists.txt and code files are " "located. If it is a relative " "path it will be evaluated with respect to the current " "directory (the typical usage), but it may also be an absolute path. " "The binary_dir specifies the directory in which to place the output " "files. If it is a relative path it will be evaluated with respect " "to the current output directory, but it may also be an absolute " "path. If binary_dir is not specified, the value of source_dir, " "before expanding any relative path, will be used (the typical usage). " "The CMakeLists.txt file in the specified source directory will " "be processed immediately by CMake before processing in the current " "input file continues beyond this command.\n" "If the EXCLUDE_FROM_ALL argument is provided then targets in the " "subdirectory will not be included in the ALL target of the parent " "directory by default, and will be excluded from IDE project files. " "Users must explicitly build targets in the subdirectory. " "This is meant for use when the subdirectory contains a separate part " "of the project that is useful but not necessary, such as a set of " "examples. " "Typically the subdirectory should contain its own project() command " "invocation so that a full build system will be generated in the " "subdirectory (such as a VS IDE solution file). " "Note that inter-target dependencies supercede this exclusion. " "If a target built by the parent project depends on a target in the " "subdirectory, the dependee target will be included in the parent " "project build system to satisfy the dependency." ; } cmTypeMacro(cmAddSubDirectoryCommand, cmCommand); }; #endif