2010-11-18 28 views
2

J'expérimente waf pour mon projet. L'une des caractéristiques intéressantes de D est «l'importation» de fichiers entiers dans le code au moment de la compilation. Pour ce faire, vous devez spécifier les dossiers à rechercher dans les fichiers à importer. Dans le cas du compilateur dmd, vous devez utiliser l'option de ligne de commande -Jpath.Comment ajouter des options de compilation pour un seul fichier d'une bibliothèque dans WAF?

Je construis une bibliothèque avec une centaine de fichiers dans des dossiers différents, et je veux être en mesure de spécifier l'option -J seulement pour la copilation de certains fichiers spécifiques. Ceci est fait dans cmake avec quelque chose comme:

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

Mais dans waf je ne sais pas comment le faire. Mon wscript lookes comme ça, mais cela passe les drapeaux -J à tous les fichiers:

#! /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') 

Répondre

1

Vous pouvez faire:

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

bld.stlib(
..., 
use=["specialfile"], 
)