SYNCHRONIZE_DRAIN的用处
SYNCHRONIZE_DRAIN是一个sources文件中使用的宏,它的定义方式是:SYNCHRONIZE_DRAIN=1
日前,弄BSP时遇到一个没想到的东东:复制过来的微软的触摸屏源代码竟然编译不过,提示有些lib文件找不到……
就是因为sources文件中没定义SYNCHRONIZE_DRAIN=1;因为驱动文件夹中包含多个驱动文件,使用的一些库之间有某种依赖关系造成的;
如果sources文件中定义了SYNCHRONIZE_DRAIN=1,则Build.exe会最后才构建此文件。也就是说先编译dirs文件中的其他文件,最后再编译sources文件中定义了此宏的文件。
好处:解决了依赖库问题,在这种情况下,你必须确保你的构建过程是有顺序的,以便于Build.exe不会尝试去构建一个它的依赖文件都还没有构建的文件,不然就会产生一些错误,像我遇到的情况。
A directory containing a sources file that uses this macro is not built until all other directories are built. For example, this macro definition allows you to ensure that all preceding library (.lib) files are built before building the current directory, which depends on the previous libraries.
If this macro definition is set to 1 in a directory's sources file, Build.exe builds that directory last.
还需要注意一点:If a directory uses this macro, list the directory last in its parent dirs file.
就是说那个目录文件中包含此宏,还应该把此目录文件放在dirs文件的dirs表示行的最末行;表明dirs中指示的文件也是有顺序的