代码之家  ›  专栏  ›  技术社区  ›  jordi

如何只为WAF中的库文件之一添加编译选项?

waf d
  •  3
  • jordi  · 技术社区  · 14 年前

    我正在为我的d项目试验waf。D的一个很好的特性是在编译时将整个文件“导入”到代码中。为此,必须指定要在其中查找以导入文件的文件夹。对于dmd编译器,必须使用-Jpath命令行选项。

    我正在构建一个库,其中有100个文件位于不同的文件夹中,我希望能够指定-J选项,仅用于复制某些特定文件。这是在cmake中完成的,类似于:

    set_source_files_properties( 
        core/shader.d PROPERTIES COMPILE_FLAGS 
            -J${CMAKE_CURRENT_SOURCE_DIR}/core/gl2/shaders )
    

    但在华夫我不知道怎么做。我的wscript看起来像这样,但这会将-J标志传递给所有文件:

    #! /usr/bin/env python
    # encoding: utf-8
    
    def build(bld):
    
     bld.stlib(
      source   = 
       '''
       app/action.d
       app/client.d
    <...snip..>
       core/shader.d
       core/stream.d
       ''',
      includes = ['..', '../extern' ],
      name     = 'mylib',
      target   = 'mylib
      dflags  = '-J/some/path/core/gl2/shaders')
    
    1 回复  |  直到 14 年前
        1
  •  2
  •   Tim Cooper    12 年前

    你可以:

    bld(
     target="specialfile",
     features="d",
     source="specialfile.c",
     defines=["SPECIAL=1"],
    )
    
    bld.stlib(
     ...,
     use=["specialfile"],
    )