mirror of
https://gitlab.com/ita1024/waf.git
synced 2024-11-22 01:46:15 +01:00
Add example for cleaning when top==out.
This commit is contained in:
parent
5915ae6d59
commit
6b05e61567
4
playground/top_eq_out/.gitignore
vendored
Normal file
4
playground/top_eq_out/.gitignore
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
.lock-w*
|
||||
.conf_check_*
|
||||
config.log
|
||||
c4che
|
2
playground/top_eq_out/a.cpp
Normal file
2
playground/top_eq_out/a.cpp
Normal file
@ -0,0 +1,2 @@
|
||||
int truc=5;
|
||||
|
71
playground/top_eq_out/wscript
Normal file
71
playground/top_eq_out/wscript
Normal file
@ -0,0 +1,71 @@
|
||||
#! /usr/bin/env python
|
||||
# encoding: utf-8
|
||||
|
||||
"""
|
||||
Example providing a clean context for when top==out.
|
||||
|
||||
When top==out, waf will not do anything by default
|
||||
in the clean context, because it could be dangerous.
|
||||
You need to do something for your particular use case.
|
||||
This example will remove all the generated files that
|
||||
will appear under out.
|
||||
|
||||
The distclean operation, which normally removes the build folder
|
||||
completely plus some files, is also modified to remove
|
||||
the rest of waf-generated files.
|
||||
|
||||
Notes:
|
||||
|
||||
- this example won't work when using dynamic builds.
|
||||
|
||||
This is because it uses the tasks output files, which
|
||||
are known in advance.
|
||||
|
||||
For it to work, you would need to store the outputs of
|
||||
dynamic builds somewhere.
|
||||
|
||||
But top == out is a rare case, so why bother.
|
||||
|
||||
|
||||
|
||||
"""
|
||||
|
||||
VERSION='0.0.1'
|
||||
APPNAME='clean_test'
|
||||
|
||||
top = '.'
|
||||
out = '.'
|
||||
|
||||
def options(opt):
|
||||
opt.load('compiler_cxx')
|
||||
|
||||
def configure(conf):
|
||||
conf.load('compiler_cxx')
|
||||
conf.check(header_name='stdio.h', features='cxx cxxprogram', mandatory=False)
|
||||
|
||||
def build(bld):
|
||||
bld(features='cxx', source='a.cpp', target='pouet')
|
||||
|
||||
if bld.cmd == 'clean':
|
||||
for tgen in bld.get_all_task_gen():
|
||||
tgen.post()
|
||||
for t in tgen.tasks:
|
||||
for n in t.outputs:
|
||||
if n.is_child_of(bld.bldnode):
|
||||
n.delete()
|
||||
|
||||
|
||||
def distclean(ctx):
|
||||
import os, shutil
|
||||
from waflib import Context
|
||||
|
||||
for fn in os.listdir('.'):
|
||||
if fn.startswith('.conf_check_') or fn.startswith(".lock-w") \
|
||||
or fn in (Context.DBFILE, 'config.log') \
|
||||
or fn == 'c4che':
|
||||
if os.path.isdir(fn):
|
||||
shutil.rmtree(fn)
|
||||
else:
|
||||
os.unlink(fn)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user