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