我正在创建一个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的本地副本,然后将A.dll标记为稍后在代码中复制到我的安装目录(本地'dist'dir)。但是,我知道对于安装在系统中的库,您可以执行以下操作:
cfg.check_cxx(uselib_store="GL", stlib="opengl32")
我想,我的问题是:有没有办法用本地存储的外部库做类似的事情?可能是某些check_cxx(libpath="external/blah", ...)
或类似的东西?
答案 0 :(得分:5)
答案 1 :(得分: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保留在项目本地的目录中,但将其更改为与其他库一起工作也不错。