GENie (pronounced as Jenny) is project generator tool. It automagically generates project from Lua script, making applying the same settings for multiple projects easy.
Supported project generators:
version 1170 (commit 22cc907a4351db46c55f73e6aa901f1b2f0c52ad)
Linux:
https://github.com/bkaradzic/bx/raw/master/tools/bin/linux/genie
OSX:
https://github.com/bkaradzic/bx/raw/master/tools/bin/darwin/genie
Windows:
https://github.com/bkaradzic/bx/raw/master/tools/bin/windows/genie.exe
$ git clone https://github.com/bkaradzic/genie
$ cd genie
$ make
Introduction to GENie - CppCon 2016
<a href="http://www.youtube.com/watch?feature=player_embedded&v=_vArtdDTrTM"
target="_blank"><img src="http://img.youtube.com/vi/_vArtdDTrTM/0.jpg"
alt="Introduction to GENie - CppCon 2016" width="640" height="480" border="0" />
Initial version of GENie is fork of Premake 4.4 beta 5, and there is no intention to keep it compatible with it.
os.uuid(<string>)
should produce consistent UUID.scripts
directory.SmallerTypeCheck
VS option when ExtraWarnings
is set (need to
move it into separate option).startproject "<project name>"
to set default project in VS.NoMinimalRebuild
and added reversed logic to EnableMinimalRebuild
.NoMultiProcessorCompilation
flag to disable multiprocessor
compilation in MSVC.UnsignedChar
flag to force char to be unsigned.SingleOutputDir
flag to use single output directory (original behaviour).removeflags
, removelinks
.targetsubdir
.group
.options
section (and ForceCpp
to enforce C++ compile even if
extension is for C files)msgcompile
, msgresource
, msglinking
and msgarchiving
as
overrides for make messages.messageskip
list to disable some of compiler messages.buildoptions_c
, buildoptions_cpp
, buildoptions_objc
,
buildoptions_objcpp
, buildoptions_asm
, buildoptions_swift
for
configuring language specific build options.excludes
in removefiles
and excludes
. With VS
excludes
will exclude files from build but files will be added to project
file. removefiles
removes files completely from project.windowstargetplatformversion
to specify VS Windows target version.NoWinRT
flag to disable WinRT CX builds.NoBufferSecurityCheck
flag to disable security checks in VS.nopch
file list to exclude files from using PCH.EnableAVX
and EnableAVX2
flags to enable enhanced instruction set.userincludedirs
for include header with angle brackets and quotes
search path control.C7DebugInfo
.files
lists.clean
action.removeplatforms
that removes VS build target platforms.PedanticWarnings
flag.ObjcARC
flag to enable automatic reference counting for Objective-C(++).iostargetplatformversion
, macostargetplatformversion
, and
tvostargetplatformversion
to specify XCode OS target version.xcode3
, and xcode4
actions.xcode8
, xcode9
, xcode10
, xcode11
and xcode14
actions.systemincludedirs
that are always searched after directories added
using includedirs
.NoRuntimeChecks
flag to disable Basic Runtime Checks in non-optimized
Visual Studio builds.Cpp11
, Cpp14
, Cpp17
, Cpp20
and CppLatest
.xcodeprojectopts
and xcodetargetopts
.UnitySupport
flag to enable Unity (Jumbo) builds in vs2019jcdb
action for generating a JSON compilation database.build is a set of build system scripts and related tools, built around GENie project generator tool.
https://milostosic.github.io/build/
It is possible to debug build scripts using ZeroBrane Studio. You must compile GENie in debug mode
$ make config=debug
This ensures the core lua scripts are loaded from disk rather than compiled
into the GENie binary. Create a file named debug.lua
as a sibling to your
main genie.lua
script with the following content:
local zb_path = <path to ZeroBraneStudio>
local cpaths = {
string.format("%s/bin/lib?.dylib;%s/bin/clibs53/?.dylib;", zb_path, zb_path),
package.cpath,
}
package.cpath = table.concat(cpaths, ';')
local paths = {
string.format('%s/lualibs/?.lua;%s/lualibs/?/?.lua', zb_path, zb_path),
string.format('%s/lualibs/?/init.lua;%s/lualibs/?/?/?.lua', zb_path, zb_path),
string.format('%s/lualibs/?/?/init.lua', zb),
package.path,
}
package.path = table.concat(paths, ';')
require('mobdebug').start()
NOTE: update zb_path
to refer to the root of your ZeroBrane Studio
install. For reference, you should find lualibs
in you zb_path
folder
To debug, make sure ZBS is listening for debug connections and add
dofile("debug.lua")
to genie.lua
https://github.com/bkaradzic/bgfx bgfx - Cross-platform, graphics API agnostic, "Bring Your Own Engine/Framework" style rendering library.
https://github.com/Psybrus/Psybrus Psybrus Engine & Toolchain
https://github.com/dariomanesku/cmftstudio cmftStudio - cubemap filtering tool
https://github.com/mamedev/mame MAME - Multiple Arcade Machine Emulator
http://sol.gfxile.net/soloud SoLoud is an easy to use, free, portable c/c++ audio engine for games.
https://github.com/andr3wmac/Torque6 Torque 6 is an MIT licensed 3D engine loosely based on Torque2D. Being neither Torque2D or Torque3D it is the 6th derivative of the original Torque Engine.
https://milostosic.github.io/MTuner MTuner is a memory profiler and memory leak finder for Windows, PS4, PS3.
Developer Crackshell used GENie for development of games Heroes of Hammerwatch, and Serious Sam's Bogus Detour.
GENie
Copyright (c) 2014-2018 Branimir Karadžić, Neil Richardson, Mike Popoloski,
Drew Solomon, Ted de Munnik, Miodrag Milanović, Brett Vickers, Bill Freist,
Terry Hendrix II, Ryan Juckett, Andrew Johnson, Johan Sköld,
Alastair Murray, Patrick Munns, Jan-Eric Duden, Phil Stevens, Stuart Carnie,
Nikolay Aleksiev, Jon Olson, Mike Fitzgerald, Anders Stenberg, Violets,
Hugo Amnov, Christian Helmich.
All rights reserved.
https://github.com/bkaradzic/genie
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
3. Neither the name of the GENie nor the names of its contributors may be
used to endorse or promote products derived from this software without
specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.