linux下flex与bison源码安装,Win flex-bison开发环境配置
Flex-Bison是一套很好很方便的工具,但是主要基于Linux,對于我這種喜(懶)歡(于)使(學)用(習) Windows(Linux)的主,希望能夠在windows環境中使用這套工具。所幸,國外的大佬們提供了Windows環境下可以使用的Flex-Bison套裝:Win flex-bison。
Win-Flex-Bison的下載頁面地址:
https://sourceforge.net/projects/winflexbison/postdownload
本文采用的版本是2.5.15,不過好像殺毒軟件的對該套裝多有誤會,本人無法確定是否真有問題,讀者慎選。
下載頁面如圖 1所示:
圖 1 WinFlexBison下載頁面
文本提供兩種配置方式:1)針對Visual Studio的用戶;2)使用CodeBlocks的用戶。其他IDE的暫不提供,但是會了這樣種基本就夠用了吧?
一、安裝Win flex-bison
將Win flex-bison的下載安裝包win_flex_bison-2.5.15.zip解壓縮到你喜歡的目錄,如:“C:\win_flex_bison”(本文以此為例。并且注意:請在解壓的路徑中別帶中文或帶空格的目錄,以免發生意外情況)。可以查看一下目錄中的內容,如圖 2所示。
圖 2 安裝好Win flex-bison的目錄
二、安裝完畢后添加環境變量
在系統環境變量Path中添加“C:\win_flex_bison”,以便能夠直接訪問win_bison.exe和win_flex.exe。添加完畢后可以通過cmd在非安裝目錄中測試一下,即在命令提示符下(任意目錄下)鍵入:“win-bison.exe -V”,如果能夠出現如圖 3所示的bison的版本信息說明環境變量添加成功。
圖 3 測試Win flex-bison
三、Visual Studio下的配置
本文使用的Visual Studio(VS)是2012版本,其他版本(不低于2010)的應該都可以。另外,文本的做法來自于網站的文章(這里我主要起搬運工的作用):
https://sourceforge.net/p/winflexbison/wiki/Visual%20Studio%20custom%20build%20rules/
下面是具體的配置過程。
1、打開Visual Studio 2012,建立Win32控制臺項目。
通過菜單的“文件→新建→項目”,在彈出的對話框中選擇模板下的Visual C++中的Win32控制臺應用程序工程(如圖 4所示),名稱內填寫“TestFlexBison”(你可以任意起名),點擊“確定”,之后在“應用程序設置”中附加選項勾選“空項目”,如圖 5所示,點擊完成。
圖 4 建立Win32工程
圖 5 選擇空項目
2、VisualStudio中配置MSBuild規則
MSBuild配置后方便在VisualStdio中使用win_flex和win_bison工具。配置的參考網址:
https://docs.microsoft.com/zh-cn/visualstudio/msbuild/msbuild?view=vs-2017
首先,右鍵右鍵點擊工程在彈出的菜單中選擇“生成自定義”,見圖 6。
圖 6 MSBuild的自定義規則的配置
在點擊后會彈出相關的窗口,如圖 7所示。
圖 7 自定義文件選擇窗口
之后在彈出的文件選擇框中選擇之前Win flex-bison的安裝目錄“C:\win_flex_bison”下的custom_build_rules子目錄下的子目錄win_flex_bison下的win_flex_bison_custom_build.targets文件。
圖 8 選擇自定義build的目標文件
選擇打開,之后的是否添加搜索路徑對話框中選擇“是”,如圖 9所示。
圖 9 確定添加build文件路徑
勾選新添加了build項,點擊確定,如圖 10所示。
圖 10 勾選自定義build項文件
3、查看相關屬性
完成上述工作之后,右鍵點擊項目,在彈出的菜單中選擇屬性,如圖 11所示。
圖 11 選擇項目的屬性
可以發現配置屬性中增加了Bison files和Flex files的配置項(注意,工程中需要有.l和.y文件,否則不顯示的),如圖12所示。你可以根據需要在Visual Studio中進一步進行配置(不在本文所述范圍內)。
圖 12 添加了Bison files和Flex files配置項
4、設置輸出信息的級別
最后,在工具→選項對話框的項目和解決方案中的生成并運行中的MSBuild項目生成輸出詳細信息的下拉菜單中選擇普通(缺省是最小),如圖13所示。這樣就能看到當bison(.y)或flex(.l)文件存在錯誤時,處理過程中給出詳細的錯誤信息,方便你進行調試。
圖 13 修改MSBuild項的輸出信息級別
至此,Visual Studio2012中的配置就完成了,你可以向項目中添加你的flex文件和bison文件,配合其他工程文件去完成你自己的工作了。針對Visual Studio的配置已經完成,主要是搬運前面鏈接中的內容。
四、CodeBlocks下的配置
CodeBlocks下的配置如果比較了解編譯過程,經常寫makefile的人會感覺比較方便(我是后反勁,我從來不寫makefile,所以我喜歡使用集成IDE),并且有了前面Visual Studio下的配置打底,應該沒有啥問題。
1、安裝CodeBlocks工具
這個沒啥好說的,網上有很多搬運工,直接參考即可,但需要注意,CodeBlocks的安裝目錄也最好保證里面不要出現“空格”、“中文字符”,其實主要保證的是MinGW里面的g++等工具的正常使用,避免一些麻煩,畢竟是從Linux遷移到Windows中,難保有些地方水土不服。不過本人的CodeBlocks就按照在“C:\Program Files (x86)\CodeBlocks”下,貌似這里也沒有出問題,也正常使用(但是VSCode里配置其他任務時存在問題)。啟動CodeBlocks,界面如圖 14所示。
圖 14 CodeBlocks啟動后的界面
2、配置Compiler
在菜單中選擇“Settings->Compiler…”,進行Compiler的相關配置,彈出相關配置compiler的對話框圖 15,如圖所示。
圖 15 compiler的配置對話框
在對話框的選項卡中(往右選),選擇“Other settings”,在里面選擇“Advanced options”,如圖 16所示。
圖 16 Other settings
點擊后會彈出一個對話框,主要是怕我們隨意修改compiler的編譯選項,如圖 17所示。由于我們就是要修改,所以選擇“Yes”。
圖 17 修改配置的敬告
之后,會彈出“Advanced compiler options”對話框,如圖 18所示。里面有很多命令的宏,讀者可以仔細閱讀一下,記錄一下,這樣對我們的后繼操作有很大幫助,這點CodeBlocks還是真挺靠譜的。說實話,通過這次配置,直接讓我對CodeBlocks路轉粉,一點都不夸張。在這里可以對編譯器等相關工具直接進行高級的配置,我們接下來要針對.l和.y進行配置。
圖 18 Advanced compiler options對話框
3、針對.l的配置
在Source ext.的下拉框中選擇l,表示將針對flex文件進行配置,如圖 19所示,選擇后下面的Command line macro下面的編輯框中會顯示利用flex命令對.l文件進行處理的命令行(命令及命令參數)。由于CodeBlocks使用的是移植自Linux的MinGW,所以其缺省的命令還是Linux下使用flex的命令。現在我們需要更新為:“win_flex -o$file_dir/$file_name.flex.cpp --wincompat $file”,其中“$file_dir/$file_name.flex.cpp”是要生成的cpp文件的目錄+文件名稱。你可以根據你的需要選擇由flex生成的文件是什么名字。相應的在Generated files的編輯框中同樣修改為“$file_dir/$file_name.flex.cpp”,和前面的生成一致,這樣能夠讓CodeBlocks找到生成的文件進行編譯處理。這樣.l的配置就完成了,接下來是.y的配置。
圖 19 .l的配置
4、針對.y的配置
同.l的配置類似,如圖 20所示,同樣在Source ext.的下拉菜單中選擇y,進入.y文件的相關配置中,替換原來的配置項為:
“win_bison --output=$file_dir/$file_name.tab.cpp --defines=$file_dir/$file_name.tab.h $file”(具體可以參考win_bison的幫助,通過win_bison --help)。相應Generate files也修改為“$file_dir/$file_name.tab.cpp” 和“$file_dir/$file_name.tab.h”。之后點擊OK即完成配置,這樣你就可以添加你的.y和.l到你的工程中了。
圖 20 .y的配置
5,特別注意:如果已經有工程了,那么在配置后請一定重啟CodeBlocks之后再Bulid工程,否則CodeBlocks還會按修改配置之前的配置進行Build。
五、補充說明
之所以是配置.l的生成文件為$file_name.flex.cpp,而.y的生成文件是$file_name.tab.h和$file_name.tab.cpp,完全是因為參考了Win flex_bison這個軟件包中針對Visual Studio的設置。你完全可以指定為自己想要的文件名稱($file_name.scanner.cc,$file_name.parser.hh或$file_name.parser.cc等等),不過在工程中的其他文件中引用生成文件的頭文件時,還請進行相應的修改。
本配置針對的是C版的flex和bison,但是集成在C++工程中使用的話(本人已經實現過較大的工程),目前沒有發現啥致命的問題。由于C版的目前足夠使用(聽說有專門為針對C++的),故沒有研究C++版的。
按理說,flex和bison應該是很常用的工具,但是這方面的資料好像比較少,特別是Windows下,有也大多都是搬運工,并且里面的細節也是比較的含糊,簡直就是不想讓你看清楚。難道是大家都是在Linux下使用?本文提供一份Windows下的解決方案,希望能夠幫助那些想用flex和bison但又不熟(想)悉(學)Linux的人。
Linux,不學不行嗎?
轉載請注明出處,否則不太好哇?
END
總結
以上是生活随笔為你收集整理的linux下flex与bison源码安装,Win flex-bison开发环境配置的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 简易编译器实现(二)使用Bison创建语
- 下一篇: 长三角半导体产业参观日记