diff --git a/examples/wscript b/examples/wscript
index 52de33f..1073033 100644
--- a/examples/wscript
+++ b/examples/wscript
@@ -3,22 +3,21 @@
 top = '..'
 
 def build(bld):
-    # List all .cpp files (whole example should be in one .cpp)
-    for i in bld.path.ant_glob(['*.cpp']):
-        name = str(i)[:-len(".cpp")]
-        bld(features=['cxx', 'cxxprogram'],
-            target=name,
-            source=[i] + bld.path.ant_glob(['%s/**/*.cpp' % name]),
-            use='ndn-cxx',
-            install_path=None
-            )
+    # List all .cpp files (whole example in one .cpp)
+    for ex in bld.path.ant_glob('*.cpp'):
+        name = ex.change_ext('').path_from(bld.path.get_bld())
+        bld.program(name='example-%s' % name,
+                    target=name,
+                    source=[ex],
+                    use='ndn-cxx',
+                    install_path=None)
 
-    # List all directories files (example can has multiple .cpp in the directory)
-    for name in bld.path.ant_glob(['*'], dir=True, src=False):
-        bld(features=['cxx', 'cxxprogram'],
-            target="%s/%s" % (name, name),
-            source=bld.path.ant_glob(['%s/**/*.cpp' % name]),
-            use='ndn-cxx',
-            install_path=None,
-            includes='%s' % name,
-            )
+    # List all directories (example can have multiple .cpp in the directory)
+    for subdir in bld.path.ant_glob('*', dir=True, src=False):
+        name = subdir.path_from(bld.path)
+        bld.program(name='example-%s' % name,
+                    target=name,
+                    source=subdir.ant_glob('**/*.cpp'),
+                    use='ndn-cxx',
+                    includes=name,
+                    install_path=None)
