Как скомпилировать исходные файлы c ++, сгенерированные во время выполнения, используя waf? - PullRequest
4 голосов
/ 14 декабря 2011

У меня есть protobuf proto-файлы в исходном дереве.Я хочу генерировать исходные файлы из прото-файлов при каждом изменении и при первом запуске (например, я создаю новый прото-файл).Затем я хочу скомпилировать разделяемую библиотеку из этих исходных файлов и сохранить их в дереве исходных текстов.

Каков наилучший способ достижения моей цели?

1 Ответ

5 голосов
/ 24 декабря 2011

Я нашел решение сам:

from waflib import Build, Utils, TaskGen

def build(bld):
    bld.post_mode = Build.POST_LAZY

    # some bld(...) tasks that generate source files.

    bld.shlib(source='main.cc', dynamic_source='**/*.cc', target='test')

@TaskGen.feature('cxxshlib')
@TaskGen.before('process_source')
def dynamic_post(self):
    if not getattr(self, 'dynamic_source', None):
        return
    self.source = Utils.to_list(self.source)
    self.source.extend(self.path.get_bld().ant_glob(self.dynamic_source))
...