diff options
author | dec05eba <dec05eba@protonmail.com> | 2017-12-28 01:21:13 +0100 |
---|---|---|
committer | dec05eba <dec05eba@protonmail.com> | 2017-12-28 01:27:11 +0100 |
commit | bcd3c09fc6f4264108e0e658122515b50db29c77 (patch) | |
tree | 8a3de84a800a5295a5f09d9b5943ac386802beaa /src/Conf.cpp | |
parent | 0cf81a4421f9a4d267245a3041508b617a01d68d (diff) |
Add package include dirs config
Fix getRealPath returning corrupt path.
This allows you to specifying a list of include dirs under [package], like:
[package]
name = "blabla"
include_dirs = ["include"]
There are many libraries that include paths to header files like this,
so when including a header file, you dont have to specify relative path
to header files (which can be long), and you can use same path
no matter where you are including header from.
Currently include_dirs is not propagated to dependant packages
and im not sure if they should be, from the looks of it the reason
you want include_dirs is internal package setup.
Diffstat (limited to 'src/Conf.cpp')
-rw-r--r-- | src/Conf.cpp | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/src/Conf.cpp b/src/Conf.cpp index b1e05bb..97d562c 100644 --- a/src/Conf.cpp +++ b/src/Conf.cpp @@ -413,6 +413,22 @@ namespace sibs else throw ParserException("Expected package.tests to be a single value, was a list"); } + else if(name.equals("include_dirs")) + { + if(value.isList()) + { + // TODO: Checking for duplicate declaration should be done in the config parser + if(!includeDirs.empty()) + throw ParserException("Found duplicate declaration of package.include_dirs"); + + for(const StringView &includeDir : value.asList()) + { + includeDirs.emplace_back(string(includeDir.data, includeDir.size)); + } + } + else + throw ParserException("Expected package.include_dirs to be a list, was a single value"); + } } else if(currentObject.equals("dependencies")) { |