Thread: [pygccxml-development] building project with include subFolder
Brought to you by:
mbaas,
roman_yakovenko
From: Damien F. <dam...@mo...> - 2008-07-22 17:46:29
|
Hi , the library that I need to convert is organized sort like : src/algo /misc/string /number /utils /stream then inside the file the include are : #include "algo/sort.h" #include "misc/string/capitalize.h" #include "stream/save.h" reading the documentation I originally copied all the header into a single directory an include those into the main file to Bind. this work quite well but there is some problem . - I can't use the live files - there are some file with the same names . - etc I there a way to update my project so I could have one include file : #include "algo/sort.h" #include "misc/string/capitalize.h" #include "stream/save.h" #include "utils/io.h" then setup my search so it doesnt exlude the class registered in ./algo , ./mist , ./stream , ./utils ? I have try using the include path , but didnt manage to make it work . just want to make sure its possible . Thanks Damien |
From: Roman Y. <rom...@gm...> - 2008-07-22 18:27:08
|
On Tue, Jul 22, 2008 at 8:46 PM, Damien Fagnou <dam...@mo...> wrote: > Hi , > > the library that I need to convert is organized sort like : > > src/algo > /misc/string > /number > /utils > /stream > > then inside the file the include are : > > #include "algo/sort.h" > #include "misc/string/capitalize.h" > #include "stream/save.h" > > reading the documentation I originally copied all the header into a > single directory an include those into the main file to Bind. > this work quite well but there is some problem . > - I can't use the live files > - there are some file with the same names . > - etc > > I there a way to update my project so I could have one include file : > > #include "algo/sort.h" > #include "misc/string/capitalize.h" > #include "stream/save.h" > #include "utils/io.h" > > then setup my search so it doesnt exlude the class registered in ./algo > , ./mist , ./stream , ./utils ? > I have try using the include path , but didnt manage to make it work . > just want to make sure its possible . Hope next code will help you, at least will give you some direction import os source_dir = absolute path to "src" directory source_files = iterate over source_dir recursive and gather all files, use absolute paths tmp = [] for f in source_files: tmp.append( '#include "%s"' % f ) tmp = os.linesep.join( tmp ) from pygccxml import parser mb = module_builder_t( [ parser.create_text_fc( tmp ) ], .... ); #now I hope you can filter on location: def my_filter( decl ): if not decl.location: return True elif decl.location.file_name is under one of your directories: return True else: return False mb.global_ns.exclude() mb.global_ns.decls( my_filter ).include() HTH -- Roman Yakovenko C++ Python language binding http://www.language-binding.net/ |
From: Damien F. <dam...@mo...> - 2008-07-23 08:37:57
|
Roman Yakovenko wrote: > On Tue, Jul 22, 2008 at 8:46 PM, Damien Fagnou > <dam...@mo...> wrote: > >> Hi , >> >> the library that I need to convert is organized sort like : >> >> src/algo >> /misc/string >> /number >> /utils >> /stream >> >> then inside the file the include are : >> >> #include "algo/sort.h" >> #include "misc/string/capitalize.h" >> #include "stream/save.h" >> >> reading the documentation I originally copied all the header into a >> single directory an include those into the main file to Bind. >> this work quite well but there is some problem . >> - I can't use the live files >> - there are some file with the same names . >> - etc >> >> I there a way to update my project so I could have one include file : >> >> #include "algo/sort.h" >> #include "misc/string/capitalize.h" >> #include "stream/save.h" >> #include "utils/io.h" >> >> then setup my search so it doesnt exlude the class registered in ./algo >> , ./mist , ./stream , ./utils ? >> I have try using the include path , but didnt manage to make it work . >> just want to make sure its possible . >> > > Hope next code will help you, at least will give you some direction > It definitely did ! Thanks again for you quick and useful reply . > import os > > source_dir = absolute path to "src" directory > source_files = iterate over source_dir recursive and gather all files, > use absolute paths > > tmp = [] > for f in source_files: > tmp.append( '#include "%s"' % f ) > tmp = os.linesep.join( tmp ) > > from pygccxml import parser > > mb = module_builder_t( [ parser.create_text_fc( tmp ) ], .... ); > > #now I hope you can filter on location: > > def my_filter( decl ): > if not decl.location: > return True > elif decl.location.file_name is under one of your directories: > return True > else: > return False > > mb.global_ns.exclude() > mb.global_ns.decls( my_filter ).include() > > HTH > > |