//-------------------------------------------------------------
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" }
//-------------------------------------------------------------