mirror of
https://github.com/Kitware/CMake.git
synced 2026-01-06 05:40:54 -06:00
sourceFile properties: add property INCLUDE_DIRECTORIES
This commit is contained in:
@@ -16,6 +16,7 @@
|
||||
#include "cmMakefile.h"
|
||||
#include "cmRulePlaceholderExpander.h"
|
||||
#include "cmSourceFile.h"
|
||||
#include "cmSourceFileLocation.h"
|
||||
#include "cmState.h"
|
||||
#include "cmStateDirectory.h"
|
||||
#include "cmStateTypes.h"
|
||||
@@ -37,6 +38,7 @@
|
||||
#include <sstream>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <unordered_set>
|
||||
#include <utility>
|
||||
|
||||
#if defined(__HAIKU__)
|
||||
@@ -1959,6 +1961,52 @@ void cmLocalGenerator::AppendCompileOptions(
|
||||
}
|
||||
}
|
||||
|
||||
void cmLocalGenerator::AppendIncludeDirectories(
|
||||
std::vector<std::string>& includes, const char* includes_list,
|
||||
const cmSourceFile& sourceFile) const
|
||||
{
|
||||
// Short-circuit if there are no includes.
|
||||
if (!includes_list) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Expand the list of includes.
|
||||
std::vector<std::string> includes_vec;
|
||||
cmSystemTools::ExpandListArgument(includes_list, includes_vec);
|
||||
this->AppendIncludeDirectories(includes, includes_vec, sourceFile);
|
||||
}
|
||||
|
||||
void cmLocalGenerator::AppendIncludeDirectories(
|
||||
std::vector<std::string>& includes,
|
||||
const std::vector<std::string>& includes_vec,
|
||||
const cmSourceFile& sourceFile) const
|
||||
{
|
||||
std::unordered_set<std::string> uniqueIncludes;
|
||||
|
||||
for (const std::string& include : includes_vec) {
|
||||
if (!cmSystemTools::FileIsFullPath(include.c_str())) {
|
||||
std::ostringstream e;
|
||||
e << "Found relative path while evaluating include directories of "
|
||||
"\""
|
||||
<< sourceFile.GetLocation().GetName() << "\":\n \"" << include
|
||||
<< "\"\n";
|
||||
|
||||
this->IssueMessage(cmake::FATAL_ERROR, e.str());
|
||||
return;
|
||||
}
|
||||
|
||||
std::string inc = include;
|
||||
|
||||
if (!cmSystemTools::IsOff(inc.c_str())) {
|
||||
cmSystemTools::ConvertToUnixSlashes(inc);
|
||||
}
|
||||
|
||||
if (uniqueIncludes.insert(inc).second) {
|
||||
includes.push_back(inc);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void cmLocalGenerator::AppendDefines(std::set<std::string>& defines,
|
||||
const char* defines_list) const
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user