Skip to content
starkos edited this page Sep 24, 2013 · 16 revisions

Real quick explanation, more details to come: you can now include "tokens" in almost all project settings (TODO: list any exceptions). Tokens are expressions wrapped in a %{} sequence.

Tokens have access to one or more context objects, depending on their scope within the project: sln, prj, cfg, and file. You can access all of the fields of these context objects within the token.

#!lua
%{sln.name}
%{prj.location}
%{cfg.targetdir}

The contents of the %{} are run through loadstring() and executed at token-replacement time, so more complex replacements can be used. You can access any global value.

#!lua
%{sln.name:gsub(' ', '_')}

You can use sln, prj, cfg, and file to represent the current solution, project, configuration, and file configuration respectively. Note that these values must be in scope for the type of value you are trying to substitute or the object will be nil. You'll have to hunt around for the available fields until I have a chance to document them, but in general they follow the API names (includedirs, location, flags, etc.).

Some known tokens (feel free to add more as you use them):

#!lua
sln.name

prj.name
prj.language

cfg.architecture
cfg.buildcfg
cfg.buildtarget -- (see "targets", below)
cfg.kind
cfg.linktarget -- (see "targets", below)
cfg.longname
cfg.objdir
cfg.platform
cfg.shortname
cfg.system

file.abspath
file.basename
file.name
file.relpath

-- These values are available on build and link targets
target.abspath
target.basename
target.bundlename
target.bundlepath
target.directory
target.extension
target.name
target.prefix
target.relpath
target.suffix

Clone this wiki locally