summaryrefslogtreecommitdiffstats
path: root/Source
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2008-10-09 15:01:23 (GMT)
committerBrad King <brad.king@kitware.com>2008-10-09 15:01:23 (GMT)
commitc5f70ff27fb7ea9d2421b4cc25e303f171612525 (patch)
tree37012c7d62a1d729b70437e867a4fe3f83c6dc7d /Source
parent0ad5eb177b4b1f56c1ae29445575dc63d4ddf0eb (diff)
downloadCMake-c5f70ff27fb7ea9d2421b4cc25e303f171612525.zip
CMake-c5f70ff27fb7ea9d2421b4cc25e303f171612525.tar.gz
CMake-c5f70ff27fb7ea9d2421b4cc25e303f171612525.tar.bz2
ENH: Allow custom sources in custom targets
This adds a SOURCES option to ADD_CUSTOM_TARGET, enabling users to specify extra sources for inclusion in the target. Such sources may not build, but will show up in the IDE project files for convenient editing. See issue #5848.
Diffstat (limited to 'Source')
-rw-r--r--Source/cmAddCustomTargetCommand.cxx19
-rw-r--r--Source/cmAddCustomTargetCommand.h11
2 files changed, 25 insertions, 5 deletions
diff --git a/Source/cmAddCustomTargetCommand.cxx b/Source/cmAddCustomTargetCommand.cxx
index 94854b1..b609bd2 100644
--- a/Source/cmAddCustomTargetCommand.cxx
+++ b/Source/cmAddCustomTargetCommand.cxx
@@ -55,6 +55,7 @@ bool cmAddCustomTargetCommand
bool verbatim = false;
std::string comment_buffer;
const char* comment = 0;
+ std::vector<std::string> sources;
// Keep track of parser state.
enum tdoing {
@@ -62,6 +63,7 @@ bool cmAddCustomTargetCommand
doing_depends,
doing_working_directory,
doing_comment,
+ doing_source,
doing_verbatim
};
tdoing doing = doing_command;
@@ -111,6 +113,10 @@ bool cmAddCustomTargetCommand
currentLine.clear();
}
}
+ else if(copy == "SOURCES")
+ {
+ doing = doing_source;
+ }
else
{
switch (doing)
@@ -128,6 +134,9 @@ bool cmAddCustomTargetCommand
comment_buffer = copy;
comment = comment_buffer.c_str();
break;
+ case doing_source:
+ sources.push_back(copy);
+ break;
default:
this->SetError("Wrong syntax. Unknown type of argument.");
return false;
@@ -164,9 +173,13 @@ bool cmAddCustomTargetCommand
// Add the utility target to the makefile.
bool escapeOldStyle = !verbatim;
- this->Makefile->AddUtilityCommand(args[0].c_str(), excludeFromAll,
- working_directory.c_str(), depends,
- commandLines, escapeOldStyle, comment);
+ cmTarget* target =
+ this->Makefile->AddUtilityCommand(args[0].c_str(), excludeFromAll,
+ working_directory.c_str(), depends,
+ commandLines, escapeOldStyle, comment);
+
+ // Add additional user-specified source files to the target.
+ target->AddSources(sources);
return true;
}
diff --git a/Source/cmAddCustomTargetCommand.h b/Source/cmAddCustomTargetCommand.h
index c988e63..9eef444 100644
--- a/Source/cmAddCustomTargetCommand.h
+++ b/Source/cmAddCustomTargetCommand.h
@@ -68,7 +68,8 @@ public:
" [COMMAND command2 [args2...] ...]\n"
" [DEPENDS depend depend depend ... ]\n"
" [WORKING_DIRECTORY dir]\n"
- " [COMMENT comment] [VERBATIM])\n"
+ " [COMMENT comment] [VERBATIM]\n"
+ " [SOURCES src1 [src2...]])\n"
"Adds a target with the given name that executes the given commands. "
"The target has no output file and is ALWAYS CONSIDERED OUT OF DATE "
"even if the commands try to create a file with the name of the "
@@ -94,7 +95,13 @@ public:
"Use of VERBATIM is recommended as it enables correct behavior. "
"When VERBATIM is not given the behavior is platform specific. "
"In the future VERBATIM may be enabled by default. The only reason "
- "it is an option is to preserve compatibility with older CMake code.";
+ "it is an option is to preserve compatibility with older CMake code."
+ "\n"
+ "The SOURCES option specifies additional source files to be included "
+ "in the custom target. "
+ "Specified source files will be added to IDE project files for "
+ "convenience in editing even if they have not build rules."
+ ;
}
cmTypeMacro(cmAddCustomTargetCommand, cmCommand);