我有一个简单的控制台应用程序项目,用于在某些 TCP 服务器上使用跨平台库进行实时视频流传输。我将它从 Windows 手动移植到 Linux 和 Mac OS X。所以现在我有 3 个项目使用相同的代码,每个项目都是手动创建和测试的。现在我正在尝试创建一个预制的 lua 项目创建文件来自动化更新项目文件的过程。
我开始创建一个lua文件
我的预制 lua 构建文件中有一组 lib 链接我有我的项目所需的一组 lib 链接。
其中一些有点重复,有些则没有(例如,因为 Windows 上有“openal32”(甚至在 Windows 7 64 位版本上),Linux 上有更简单的名称“openal”,Mac OS X 上有“OpenAL.framework” (它是 mac os 上唯一包含 openAL 的选项)
我有一个 linkdirs 属性集 - 一个适用于所有系统
libdirs {
"/opt/local/lib",
"/System/Libarary/Frameworks",
"/Library/Frameworks",
"/usr/lib",
"/usr/local/lib" }
到 dirs 的链接可能适用于 Mac OS X(因为我们使用默认安装到 的 Mac 端口/opt/local/lib
)和 Linux(我们主要使用自动安装到 的 app-get 类似物,usr/lib
有时也安装到/usr/local/lib
)。但是在 Windows 上,你永远不知道 ffmpeg 在哪里或在哪里安装了 boost(可能每个程序员都有自己的想法将 windows Libs 和 Headers 保存在哪里......)所以我们需要 premake 中的一个简单的东西:
添加用户定义的库目录的操作,该目录将包含在libdirs
数组中,数组的内容相同includedirs
。它应该能够添加多个目录。
如何启用这样的东西?
我试图创建一个“基于选项的系统”,例如
newoption {
trigger = "libsPath",
value = "PATH",
description = "Choose a particular directory for general libs search"
}
if not _OPTIONS["libsPath"] then
_OPTIONS["libsPath"] = NULL
end
libdirs {
"/opt/local/lib",
"/System/Libarary/Frameworks",
"/Library/Frameworks",
"/usr/lib",
"/usr/local/lib",
_OPTIONS["libsPath"]
}
但它似乎不适用于 Windows ......我该怎么办?