On Jun 30, 2016, at 12:59 PM, Yang Luo <hslu...@gmail.com> wrote: > But I encountered an issue here, the built out scanner.h and scanner.c will > report these errors: > > 1> gencode.c > 1>..\scanner.h(239): fatal error C1083: Cannot open include file: 'unistd.h': > No such file or directory > 1> grammar.c > 1>..\scanner.h(239): fatal error C1083: Cannot open include file: 'unistd.h': > No such file or directory > 1>..\scanner.c(2787): fatal error C1083: Cannot open include file: > 'unistd.h': No such file or directory > > It seems that these generated source files want to include a UN*X only file > "unistd.h", which is not available on Windows, like you said in the next > reply. I think I need to switch some options to let Flex not use "unistd.h", > how to do it? > > OK. I found the solution. I changed the bat to: > > win_flex -Ppcap_ -7 --nounistd --outfile=..\scanner.c > --header-file=..\scanner.h ..\scanner.l > win_bison -ppcap_ --yacc --output=..\grammar.c --defines ..\grammar.y > > And Flex won't let the generated source filess require "unistd.h" any more. > > > When this bat is done, I think I will make MSVC run this bat every time > before a build process starts, is this solution OK for you?
That'd one way to do it. Another way is to have the project define YY_NO_UNISTD_H - that's what CMake does. >>> And installing flex and bison for Windows are not also very friendly. >> >> https://twitter.com/geraldcombs/status/735870968451629056 > > In fact I didn't catch the meaning very well.. What's a "IKEA motorcycle > engine"? I think "IKEA" is a furniture vendor? What does it has to do with > the motorcycle engine? A lot of the furniture that IKEA sells is un-assembled, so you take it home in a flat package and assemble it at home. For furniture, that works. But if IKEA sold motorcycle engines that way, it wouldn't work as well: http://www-psych.stanford.edu/~bt/diagrams/papers/animationearli04_files/image012.png You'd have a *lot* more work to do to assemble it, and you'd have to know a *lot* more in order to do it right. > Does it mean that building open source on Windows is very painful and > inconvenient? Pretty much, yes. When you want to build open-source software on a UN*X, as long as you have all of the necessary tools and libraries installed, it's usually just ./configure; make; make install - or maybe mkdir build cd build cmake .. make make install if it's using CMake, and the necessary tools and libraries are usually either 1) installed by default; 2) installable as a package provided by the OS developer; 3) installable from a third-party binary package; 4) installable from source. A lot of this is because most UN*Xes are very similar, with the differences mostly being relatively minor annoyances. On Windows, you may need built-for-Windows - or even ported-to-Windows - versions of the same tools and libraries, and the autotools (configure script) often don't work. If the project uses CMake, it might work, although even there you may have to do a bunch of "if(WIN32)" in the CMake files. _______________________________________________ tcpdump-workers mailing list tcpdump-workers@lists.tcpdump.org https://lists.sandelman.ca/mailman/listinfo/tcpdump-workers