vscode+msys2+cmake編譯調(diào)試Fluent UDF記錄
????????Fluent的UDF編譯調(diào)試一直以來是個比較麻煩的事,并且想要調(diào)用一些第三方動態(tài)庫時,就必須要用一些編譯小軟件①才能做到,而Fluent內(nèi)并沒有提供鏈接的方法。所以最近也是琢磨了如何使用vscode編譯調(diào)試UDF,并在此將最近配置好的編譯調(diào)試環(huán)境記錄下來。

1. 環(huán)境準(zhǔn)備
????????本文使用的Fluent版本是2019 R3,還需要安裝好[msys2](https://www.msys2.org/)和[vscode](https://code.visualstudio.com/Download)。
????????a. 安裝好msys2后,需要注意的是在MINGW64環(huán)境下安裝mingw-w64 GCC編譯工具鏈,順便還可以安裝好cmake工具。有關(guān)于msys2各個環(huán)境的區(qū)別可以查看[msys2文檔](https://www.msys2.org/docs/environments/),目前Fluent UDF使用的C運行時庫應(yīng)該還是msvcrt (PS: 個人推斷,待補充信息)。
????????編譯工具安裝完成后,需要將其路徑添加至系統(tǒng)環(huán)境變量中,例如在Path中添加C:\msys64\mingw64\bin (PS: 重啟電腦以確保更新),以方便vscode的cmake插件搜索到。
????????b. 安裝完vscode,需要在擴展商店里安裝C/C++,CMake,CMake Tools等插件。

????????c. 定位到Fluent目錄C:\Program Files\ANSYS Inc\v195\fluent\fluent19.5.0\win64文件夾,將win64下所有文件夾先打包備份,然后對各個文件夾里的 fl1950.exe 重新生成導(dǎo)入庫。 具體命令如下:? ??
????????注意node結(jié)尾的文件里,是fl_mpi1950.exe,命令里需要對應(yīng)改動。
????????同樣,定位到C:\Program Files\ANSYS Inc\v195\fluent\fluent19.5.0\multiport\win64文件夾下,打包備份。以上述方法重新生成導(dǎo)入庫。

????????對.\mpi\shared\和.\net\shared\兩個文件夾下分別執(zhí)行命令
?
????????d.修改C:\Program Files\ANSYS Inc\v195\fluent\fluent19.5.0\cortex\src\cx.h文件,查找strcasecmp來定位到需要修改的一行,按下圖方式修改保存。



2. 項目文件
? ? ? ? demo中的文件結(jié)構(gòu)如圖所示,自己編寫的C源文件等放在src文件夾下,而其他引入的庫文件放在import文件夾下。
????????相關(guān)文件https://github.com/bronya19c/CMake_Project_Demo_for_UDF

????????根據(jù)計算模型和代碼,需實時更改根目錄和src文件下的CMakeLists.txt的內(nèi)容



3. 編譯調(diào)試
????????將文件整理好后,在vscode的cmake插件里選擇“配置所有項目”,并確保ud_io1.h或者udf_names.c正常生成。若無錯誤產(chǎn)生,此時再點擊vscode最下方狀態(tài)欄上的“build”按鈕,生成libudf,完成編譯。


????????關(guān)于調(diào)試,確保編譯生成的是Debug版本的libudf,在Fluent加載好libudf.dll之后,利用vscode的附加到進程調(diào)試工具,實現(xiàn)對udf的調(diào)試。在根目錄創(chuàng)建 .vscode 文件夾,其下創(chuàng)建的launch.json文件如下圖。
????? ? 然后vscode里切到test.c文件,按F1鍵輸入“調(diào)試”選擇調(diào)試C/C++文件,之后選擇gdb 附加,便可以附加到Fluent的進程中調(diào)試了。注意查看Fluent的控制臺內(nèi)容,其中host是我們這次要附加調(diào)試的進程,按照PID即可以對應(yīng)上。


????????自此可以斷點調(diào)試了。
????????2023.4.2 初稿
參考鏈接:
[1]?https://www.cnblogs.com/liusuanyatong/p/11259628.html?
????GCC編譯UDF和gdb調(diào)試UDF - 硫酸亞銅 - 博客園 (cnblogs.com)
[2]?https://www.bilibili.com/video/BV1A7411f7jT?
????CMake簡明教程以及現(xiàn)代CMake
[3]?https://www.cnblogs.com/liusuanyatong/p/11259591.html?
????編譯udf小軟件(附視頻教程) - 硫酸亞銅 - 博客園 (cnblogs.com)
[4]?https://zhuanlan.zhihu.com/p/492619039?
????Visual Studio或CLion使用CMake編譯、調(diào)試Fluent UDF - 知乎 (zhihu.com)