OpenFOAM-生成CMakeLists.txt文件
创建时间: 2024-09-11 22:52:31
摘要: 本文介绍在OpenFOAM项目中,基于wmake编译日志生成CMakeLists.txt的通用方法。
背景介绍
虽然wmake+bear能够方便地生成compile_commands.json供C++ language server调用,足够实现辅助开发。
但是有些场景下还是希望得到项目对应的CMakeLists.txt文件(有了CMakeLists.txt文件,也能直接生成compile_commands.json),比如CLion就依赖CMakeLists.txt。
开发思路
为了保证通用性,即同时兼容org和com发行版,本项目考虑从wmake的日志出发。
通过解析wmake的编译日志,可以获得完备的编译信息给到CMakeLists.txt:
链接命令最后是编译目标,根据后缀区分是可执行文件还是动态库(或者静态库),对应
add_executable(target ...)或者add_library(target ...)-c xxx对应的是target依赖的目标源码,即target后面的源文件列表-Dxxx为预定义的变量,对应target_compile_definitions-Ixxx为头文件路径,对应target_include_directories-lxxx为引用的库,对应target_link_libraries-Lxxx为库路径,对应target_link_directories其与大部分是编译选项,对应
target_link_options还有些特殊规则的处理。
一顿操作下来,就能完成CMakeLists.txt文件的生成。
项目地址
已测试:
OpenFOAM-v2012
OpenFOAM-11