4

我尝试在 waf wscript 文件中搜索库和标题。通常,这可以通过以下方式实现:

def configure( conf ):
  conf.load( "compiler_cxx" )
  conf.check_cxx( lib = "thelib" )
  conf.check_cxx( header_name "header.hpp" )

这在类 Unix 系统上运行良好,其中库和头文件大多位于公共位置。但是,我想为check_cxx()命令添加自定义搜索路径,尤其是让 Windows 系统上的用户有机会找到通常位于文件系统中的某个库。

我知道这个libpath论点,但是它仍然需要以某种方式填充,我想知道是否没有我错过的更通用甚至内置的解决方案。

我也很高兴听到有关 waf 中此类事情的其他方法、解决方案或良好实践。

4

3 回答 3

4

最佳实践是使用useWAF 工具进行检查(wafbook 的第 10.3 节)并定义外部/系统库的路径(第 10.3.3 节

它看起来像:

def configure(conf):

    conf.load('compiler_cxx')
    conf.env.LIBPATH_MYLIB = ['/usr/local/lib']
    conf.env.INCLUDES_MYLIB  = ['/usr/local/include']

    if sys.platform == 'win32':
            conf.env.LIBPATH_MYLIB   = ['/custom/windows/path/lib']
            conf.env.INCLUDES_MYLIB  = ['/custom/windows/path/include']

    # use MYLIB in your check
    conf.check_cxx(lib = 'somelib', use = 'MYLIB', cxxflags = '-O2')

def build(bld):

    # Of course you can use the defined MYLIB in build ^^
    bld.program(source = 'main.cpp', use = 'MYLIB')
于 2013-03-19T11:10:26.990 回答
1
def build(bld):
    bld.program(
        ...
        stdlibpath=['list/of','various/paths','the/linker/checks/for','libraries'],
        ...
    )
于 2013-01-22T15:38:23.463 回答
0

Wafs C 和 C++ 编译工具也尊重 Windows 上的环境变量。因此,您只需在运行 Waf 之前设置CXXFLAGS和:LDFLAGS

> set CXXFLAGS=/IC:\\path\\to\\header.hpp-file
> set LDFLAGS=/LIBPATH:C:\\path\\thelib
> python waf configure build
...

/I并且/LIBPATH是 Waf 将传递给 C 编译器和链接器的开关。在这种情况下,Microsoft Visual C。如果您使用 gcc 或 clang ,请使用-Iand 。-L

于 2019-07-21T23:25:01.700 回答