1

我正在创建一个 wscript 文件,该文件能够链接存储在项目目录中的外部库,而不是安装到系统中,但我不确定这样做的最佳方式。

目前,我正在按照以下方式做一些事情:

cfg.env.INCLUDES_A = [os.path.normpath('external/include')]
cfg.env.LIBPATH_A  = [os.path.normpath('external/win32/A/lib/x64')]
cfg.env.LIB_A      = ['A']
cfg.env.append_unique('COPY_LIBS', os.path.normpath('external/win32/A/lib/x64/A.dll'))

在这种情况下,我链接到 A.lib 的本地副本,然后在代码后面标记要复制到我的安装目录(本地“dist”目录)的 A.dll。但是,我知道对于安装到您系统的库,您可以执行以下操作:

cfg.check_cxx(uselib_store="GL", stlib="opengl32")

我想我的问题是:有没有办法用本地存储的外部库做类似的事情?可能是某种check_cxx(libpath="external/blah", ...)或某种类型的东西?

4

2 回答 2

5

read_shlibread_stlib你可以使用。

你可以像这样使用它:

bld.read_shlib('opengl32', paths='external/blah')
于 2013-02-07T15:53:34.203 回答
2

我找到并正在使用的解决方案是:

cfg.env.LIBPATH.append(os.path.join(os.getcwd(), "external_lib_dir")
cfg.env.INCLUDES.append(os.path.join(os.getcwd(), "external_includes_dir")

然后,搜索库可以很简单:

# OpenGL
if not cfg.check_cxx(uselib_store='GL', uselib='CORE TEST', mandatory=False, lib='GL'):
    cfg.check_cxx(uselib_store='GL', uselib='CORE TEST', mandatory=True, lib='opengl32')

第一行将进行在大多数 linux 系统上工作的检查,设置为非强制,使其不会失败,第二行将在 windows 上进行检查,设置为强制,这样两个失败都会导致配置失败。

这种方式对我来说效果很好,并且可以在必要时变得更加健壮(为 osx 框架或类似的东西添加检测),但如果有人知道更好的方法,请告诉我!

编辑:显然,您可能不会将 OpenGL 保存在项目本地的目录中,但是将其更改为与其他库一起使用也不错。

于 2012-08-23T04:32:55.233 回答