4

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

我正在构建一个库,其中包含不同文件夹中的一百个文件,并且我希望能够指定 -J 选项仅用于编译某些特定文件。这是在 cmake 中完成的,例如:

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

但是在waf中我不知道该怎么做。我的 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')
4

1 回答 1

2

你可以做:

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

bld.stlib(
 ...,
 use=["specialfile"],
)
于 2012-01-07T19:29:07.377 回答