summaryrefslogtreecommitdiffstats
path: root/Source/cmTargetCompileDefinitionsCommand.cxx
diff options
context:
space:
mode:
authorStephen Kelly <steveire@gmail.com>2013-01-07 23:34:41 (GMT)
committerBrad King <brad.king@kitware.com>2013-01-10 14:46:58 (GMT)
commitfc61a7a746c3c899d42ccff3014686365c36ee11 (patch)
tree1a8079e72ae1d66b8f73303fb12f73e696aa1e86 /Source/cmTargetCompileDefinitionsCommand.cxx
parent8a37ebec784cefe4f04cb8897c23a014c3930052 (diff)
downloadCMake-fc61a7a746c3c899d42ccff3014686365c36ee11.zip
CMake-fc61a7a746c3c899d42ccff3014686365c36ee11.tar.gz
CMake-fc61a7a746c3c899d42ccff3014686365c36ee11.tar.bz2
Add the target_compile_definitions command.
This is a convenience API to populate the corresponding properties.
Diffstat (limited to 'Source/cmTargetCompileDefinitionsCommand.cxx')
-rw-r--r--Source/cmTargetCompileDefinitionsCommand.cxx57
1 files changed, 57 insertions, 0 deletions
diff --git a/Source/cmTargetCompileDefinitionsCommand.cxx b/Source/cmTargetCompileDefinitionsCommand.cxx
new file mode 100644
index 0000000..492a1b7
--- /dev/null
+++ b/Source/cmTargetCompileDefinitionsCommand.cxx
@@ -0,0 +1,57 @@
+/*============================================================================
+ CMake - Cross Platform Makefile Generator
+ Copyright 2013 Stephen Kelly <steveire@gmail.com>
+
+ 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.
+============================================================================*/
+#include "cmTargetCompileDefinitionsCommand.h"
+
+#include "cmMakefileIncludeDirectoriesEntry.h"
+
+bool cmTargetCompileDefinitionsCommand
+::InitialPass(std::vector<std::string> const& args, cmExecutionStatus &)
+{
+ return this->HandleArguments(args, "COMPILE_DEFINITIONS");
+}
+
+void cmTargetCompileDefinitionsCommand
+::HandleImportedTargetInvalidScope(const std::string &scope,
+ const std::string &tgt)
+{
+ cmOStringStream e;
+ e << "Cannot specify " << scope << " compile definitions for imported "
+ "target \"" << tgt << "\". Compile definitions can only be "
+ "specified for an imported target in the INTERFACE mode.";
+ this->Makefile->IssueMessage(cmake::FATAL_ERROR, e.str());
+}
+
+void cmTargetCompileDefinitionsCommand
+::HandleMissingTarget(const std::string &name)
+{
+ cmOStringStream e;
+ e << "Cannot specify compile definitions for target \"" << name << "\" "
+ "which is not built by this project.";
+ this->Makefile->IssueMessage(cmake::FATAL_ERROR, e.str());
+}
+
+bool cmTargetCompileDefinitionsCommand
+::HandleNonTargetArg(std::string &content,
+ const std::string &sep,
+ const std::string &entry,
+ const std::string &)
+{
+ content += sep + entry;
+ return true;
+}
+
+void cmTargetCompileDefinitionsCommand
+::HandleDirectContent(cmTarget *tgt, const std::string &content,
+ bool)
+{
+ tgt->AppendProperty("COMPILE_DEFINITIONS", content.c_str());
+}