首先Lemur的入口只有一个,但它可以根据不同的配置执行不同的代码,它是怎么组织和设计的呢?
它的组织很有趣:首先从外面来看,整个解决方案生成了好多个可执行的文件。那么深入去看,它们可以以入门所做的操作的相同来分组。
比如建立索引中的几个函数,都要调用分析输入参数GetAppParam();和分析建立索引int AppMain(int argc, char * argv[])。也就它们的入口是一样的,因此lemur利用vs依赖关系这一功能,将同一组的只做了一个入口函数(也就是我们经常提到的main函数)。也就是说lemur中把main函数放到lib(库文件),
然后让其它工程去引用这个库。从而达到同一个入口可以实现不同的功能。平时我们很少见这样用的。平时见的其实是反过来:是将不同功能放到lib,而用一个有main函数的工程去引用。它则正好倒过来用,它的入口是统一的。使开发者不用关心入口怎么去实现。比如建立索引所用的参数文件。 这个是任何一个建立索引都必须的。但是怎么建立索引你可以自己去写。只要把那个入口设为你的依赖项,它就可以帮你调用。感觉应该是这样的,因为调试的时候,它的确是这样调用的。
这种想法的确很高明呀。。