//-------------------------------------------------------------
premake是一款用于自动创建解决方案和项目文件的生成器。
支持跨平台间解决方案与项目的设置设置问题。
同时还解决了各项目间快速度项目设置/宏定义/目标修改等。
目前premake用于FlatFour,ODE,CEGUI,yake,NFS等等项目
//-------------------------------------------------------------
Premake 4.1.2, a build script generator
Copyright (C) 2002-2009 Jason Perkins and the Premake Project
Lua 5.1 Copyright (C) 1994-2008 Lua.org, PUC-Rio
Usage: premake4 [options] action [arguments]
选项开关表:
--cc=[VALUE] : 选择下列指定的C/C++编译器之一:
gcc GNU GCC (gcc/g++)
ow OpenWatcom
--dotnet=[VALUE] : 选择下列指定的.NET编译器之一:
msnet : Microsoft .NET (csc)
mono : Novell Mono (mcs)
pnet : Portable.NET (cscc)
--file=[FILE] : 加载指定的premake脚本文件,默认脚本文件是"premake4.lua"。
--help : 显示帮助信息
--os=[VALUE] : 生成下列指定的操作系统文件之一,默认Microsoft Windows:
bsd : OpenBSD, NetBSD, or FreeBSD
linux : Linux
macosx : Apple Mac OS X
windows : Microsoft Windows
--platform=[VALUE] : 生成到下列目标系统平台体系,默认x32:
x32 32位操作系统
x64 64位操作系统
universal Mac OS X Universal(32或者64位)
universal32 Mac OS X Universal(仅32位)
universal64 Mac OS X Universal(仅64位)
ps3 Playstation 3 (测试中)
xbox360 Xbox 360 (测试中)
--scripts=[PATH] : 额外搜索指定目录的脚本文件
--version : 显示版本信息
动作表:
clean : 删除所有目标文件和生成文件(生成文件包括*.obj/*.ilk等所有生成出的)
codeblocks : 生成Code::Blocks 项目与解决方案文件
codelite : 生成CodeLite 项目与解决方案文件
gmake : 生成GNU用于POSIX/MinGW/Cygwin 的 makefiles
vs2002 : 生成Microsoft Visual Studio 2002项目与解决方案文件
vs2003 : 生成Microsoft Visual Studio 2003项目与解决方案文件
vs2005 : 生成Microsoft Visual Studio 2005项目与解决方案文件
vs2008 : 生成Microsoft Visual Studio 2008项目与解决方案文件
更多信息, 参见 http://industriousone.com/premake
//-------------------------------------------------------------
下面是应用例子:
准备工作:在目录下放main.cpp文件,内容要为可以编过的代码文件。
将premake4.exe放到该目录下 (此文章用到的是Premake 4.1.2)
创建两个空批处理文件,分别是make.bat和clear.bat
创建一个主脚本文件mysln.lua (premake采用的是lua脚本,因此你可以使用lua的特性与功能)
填写make.bat文件:
premake4 --file=mysln.lua --os=windows --platform=x32 vs2005
填写clear.bat文件:
premake4 --file=mysln.lua clean
填写mysln.lua文件:
solution "MySolution"
basedir "work"
configurations { "Debug", "Release" }
language "C++"
uuid "726890BF-272F-4cff-BA17-3D21C3D1380F"
includedirs "inc"
project "MyLib"
kind "StaticLib"
includedirs "inc"
files {"*.cpp", "*.h"}
configuration "Debug"
defines { "DEBUG" }
configuration "Release"
defines { "NDEBUG" }
project "MyApp"
kind "StaticLib"
includedirs "inc"
files {"*.cpp", "*.h"}
configuration "Debug"
defines { "DEBUG" }
configuration "Release"
defines { "NDEBUG" }
//-------------------------------------------------------------