【问题标题】:How to search for libraries/headers in custom paths using waf?如何使用 waf 在自定义路径中搜索库/标题?
【发布时间】:2013-01-05 21:26:41
【问题描述】:

我尝试在 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 中此类事情的其他方法、解决方案或良好实践。

【问题讨论】:

    标签: c++ waf


    【解决方案1】:

    最佳做法是使用 WAF 的 use 工具进行检查 (§10.3 of the wafbook) 并定义外部/系统库的路径 (§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')
    

    【讨论】:

      【解决方案2】:
      def build(bld):
          bld.program(
              ...
              stdlibpath=['list/of','various/paths','the/linker/checks/for','libraries'],
              ...
          )
      

      【讨论】:

        【解决方案3】:

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

        > 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,请改用 -I-L

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-06-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多