如何将Visual Studio的sln解决方案文件转换为CMake或Makefile
Visual Studio sln转CMake/Makefile的可行方案
以下方案均适配Windows下搭载Intel OneAPI的Fortran开发场景:
- cmake-converter自定义规则适配
你之前使用的转换工具本身支持自定义选项映射,不需要完全弃用工具手动写脚本。只需在工具的本地配置表中补充Intel Fortran专属参数的映射规则即可实现全量识别:- 编译选项类:把
/QxHost、/heap-arrays0加入Intel编译器选项映射列表,转换时会自动写入对应目标的编译选项配置段 - 链接选项类:把
/SUBSYSTEM:CONSOLE、/STACK:2147483647,2147483647、/LARGEADDRESSAWARE加入链接器选项映射列表,即可自动识别导出。这套配置一次编写完成后,后续所有Intel Fortran项目转换都能复用,不用每次转换后手动补参数。
- 编译选项类:把
- 原生适配Intel Fortran的专用转换工具
- 如果你用的是Visual Studio 2022搭配Intel OneAPI 2023及以上版本,直接用VS内置的CMake导出功能就行:在解决方案资源管理器里右键选中目标Fortran项目,选择导出为CMake项目即可。这个功能原生适配Intel OneAPI的编译、链接参数,你提到的所有特殊选项都会被自动捕获,导出的CMake工程可以直接加载编译,基本不需要额外改配置。
- 如果需要直接生成Windows平台可用的Makefile,可以用适配Intel Fortran分支的sln2mak工具,注意别用只支持MSVC C++项目的原版,适配版默认内置了Intel Fortran全量编译、链接选项的识别规则,转换后生成的NMake格式Makefile可以直接在VS开发者命令行里调用nmake执行编译,你提到的栈大小、大地址感知、堆数组传递这类特殊参数都能自动识别,不需要手动调整。
- 半自动化快速生成方案
要是上述工具都不符合你的使用习惯,可以用MSBuild导出完整编译日志提取参数,比全手动对着VS属性页抄参数效率高很多:在VS开发者命令行中执行msbuild 你的解决方案名.sln /t:Rebuild /v:diag > build_log.txt,从生成的日志里能提取到工程用到的所有编译、链接全量参数,把这些参数批量填到提前准备好的CMake或Makefile模板里就行,不会出现选项遗漏的问题。
内容的提问来源于stack exchange,提问作者CRquantum
相关产品推荐
相关产品推荐

