diff options
author | dec05eba <dec05eba@protonmail.com> | 2018-01-01 06:02:59 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-01-01 06:02:59 +0100 |
commit | 4a17a61737234962a8c16b930ec8f96788f8a9eb (patch) | |
tree | 39b4fafd5c42cfc39728827ab4f7427fd32c59b3 | |
parent | f30656761ee4ba30113dc461bbef854f917763fd (diff) |
Add info about project.conf
-rw-r--r-- | README.md | 67 |
1 files changed, 67 insertions, 0 deletions
@@ -7,3 +7,70 @@ After you've download the latest release, you can install it by running install. When you have sibs installed, you can install latest version of sibs by running install.sh if you are on Linux. New install script uses sibs. Installing latest version currently doesn't work on Windows. +# Project configuration template +``` +[package] +name = "packageName" +type = "library" +version = "0.1.0" +platforms = ["linux32", "linux64", "win32", "win64"] +authors = ["DEC05EBA <0xdec05eba@gmail.com>"] +tests = "tests" +include_dirs = ["include"] +ignore_dirs = ["examples"] + +[dependencies] +catch2 = "0.1.0" +xxhash = "0.1.0" + +[config] +expose_include_dirs = ["include"] + +[config.win32.static.debug] +lib = "windows/x86/static/debug" + +[config.win32.static.release] +lib = "windows/x86/static/release" + +[config.win64.static.debug] +lib = "windows/x64/static/debug" +``` +## package +### name +Required + +### type +Required. Should be one of: "executable", "static", "dynamic", "library" + +### version +Required. Version string has to be in the format of "xxx.yyy.zzz" where xxx is major, yyy is minor and zzz is patch + +### platforms +Required. A list of platforms the package supports. Can contain the following values: "any", "linux32", "linux64", "win32", "win64". +If platforms contains "any", then other there is no need to specify other platforms + +### authors +Optional. A list of authors + +### tests +Optional. Path which contains tests. The test directory may contain a project.conf file which can contain \[dependencies] block for specifying test only dependencies. The test automatically includes the parent project as a dependency. + +### include_dirs +Optional. A list of directories which should be specified as global include directories when compiling. This means that instead of using relative paths to header files, you can include the directory with headers and then you only have to specify the header name when using #include + +### ignore_dirs +Optional. A list of directories to ignore. This means that if the ignored directory contains source files, then they wont be included in the build +## dependencies +Optional. Dependencies are specified in name-value pairs where the name is the name of the dependency, which should match the dependency name under the packages name specified in its project.conf file. +Currently, the value is the version and has to be an exact match for the package version, which is specified in the dependencies project.conf file. +This will later change and you should be able to choose minimum version and range of versions. + +Dependencies are automatically choosen from system (linux, mac) or if no package manager exists, then it's download from github +## config +### expose_include_dirs +Optional. A list of directories which contains (header) files which should be exposed to dependencies as directories to include globally. This means that dependencies can include (header) files from the dependency without specifying path to the dependency +## config.* +Optional. The name is structured in the following way: config.platform.libraryType.optimizationLevel +where platform is any of the platforms specified under \[package] (or if package contains "any", then it can be any other platform). LibraryType is either "static" or "dynamic" - different configurations depending on if the package is included as a static or dynamic library by a dependant package. OptimizationLevel is either "debug" or "release", depending on which optimization level the "root" package was built with ("root" package is usually the project which is an executable) +### lib +Optional. A directory which contains .lib or .dll files which should be included dependant projects use this project |