MakeMe Samples
Here are some actual, working sample MakeMe files from various projects. We've added comments to highlight various issues:
Live MakeMe Files
Here are some MakeMe files from live projects using MakeMe served directly from GitHub.
| Project | Purpose | URL |
|---|---|---|
| Embedthis Appweb | Project main.me | main.me |
| Embedthis Appweb | Main library build | libappweb.me |
| Embedthis Appweb | Appweb main server program | server.me |
| Embedthis Appweb | ESP module MakeMe file | esp.me |
| Embedthis Appweb | Packaging targets | installs.me |
| Embedthis Appweb | Test targets | test.me |
| Embedthis Appweb | Stand-alone MakeMe file for SSL script targets | start.me |
| Embedthis GoAhead | Project main.me | main.me |
| Embedthis Ejscript | Project main.me | main.me |
| Embedthis Ejscript | Main library | libejs.me |
| Embedthis Ejscript | Ejscript command programs | cmd.me |
| Embedthis Ejscript | Ejscript class library | core.me |
Quick Snippets
Here are some quick snippets that you can use in your MakeMe files.
Building a Library.
targets: {
libmpr: {
type: 'lib',
defines: [ 'FAST_MODE=1' ],
sources: [ '*.c' ],
headers: [ '*.h' ],
},
},
This will compile the sources, export the header to the include directory and create the library.
Building a Static Library.
targets: {
libmpr: {
type: 'lib',
sources: [ '*.c' ],
headers: [ '*.h' ],
static: true,
},
},
Building an Executable.
Set the type to exe and nominate the dependent targets. Specify the required libraries.
targets: {
appweb: {
type: 'exe',
depends: [ 'libappweb', 'libhttp', 'libmpr' ],
libraries: [ 'm' ],
sources: [ 'appweb.c' ],
},
},
Conditional Building
This will build only on windows.
targets: {
manager: {
enable: "me.platform.like == "windows'",
type: 'exe',
rule: 'gui',
depends: [ 'libmpr' ],
sources: [ 'manager.c' ],
},
}
Inheriting Shared Settings
To share settings between multiple targets, define a collection of properties and then inherit from the desired targets.
{
'shared-settings': {
'+defines': [ 'NUMBER=42' ],
},
targets: {
rocket {
inherit: ['shared-settings'],
type: 'exe'
sources: '*.c',
},
}
}
Cross-Platform Target Paths
On windows, executables have a .exe extension, whereas on Unix, there is typically no such extension. MakeMe defines the EXE global variable to .exe on Windows and to empty on other platforms.
targets: {
rocket: {
type: 'exe',
path: '${BIN}/short-range-rocket${EXE}'
},
},
The path typically defaults to: ${BIN}/NAME${EXE} where NAME is the target name. But sometimes you need to override the output path. The ${EXE} can be used to formulate the path portably across platforms.