41 lines
1.0 KiB
Markdown
41 lines
1.0 KiB
Markdown
|
---
|
||
|
title: Sharing Configuration Settings
|
||
|
---
|
||
|
|
||
|
> I'm very interested in having a project A be able to specify information that project B can use to compile and link against project A, without having to repeat that information all over the place.
|
||
|
|
||
|
There have been discussions on forums new and old about this in the past; search for "usages". It would be great to pull those together here for reference if anyone gets a chance. In the meantime, feel free to add your approaches below.
|
||
|
|
||
|
---
|
||
|
|
||
|
**@starkos:** We use functions here. For specifying how to compile and link against a library:
|
||
|
|
||
|
```lua
|
||
|
-- How to declare it
|
||
|
function someLibrary(options)
|
||
|
defines { ... }
|
||
|
links { ... }
|
||
|
options = options or {}
|
||
|
if options.someFlag then
|
||
|
defines { ... }
|
||
|
end
|
||
|
end
|
||
|
|
||
|
-- How to use it
|
||
|
project "someOtherProject"
|
||
|
kind "ConsoleApp"
|
||
|
someLibrary { someFlag="true" }
|
||
|
```
|
||
|
|
||
|
And for defining "classes" of projects:
|
||
|
|
||
|
```lua
|
||
|
function someComponent_test(name)
|
||
|
project(name)
|
||
|
kind "ConsoleApp"
|
||
|
defines { ... }
|
||
|
links { ... }
|
||
|
filter {}
|
||
|
end
|
||
|
```
|