用 cmake 管理 Fluent UDF 的编译

本文介绍了如何使用cmake管理Fluent User Defined Functions(UDF)的编译过程,通过扫描源码文件,提取所需信息并生成udf_names.c文件。文章详细展示了cmake的文件和字符串操作,以及如何处理源码中的定义,从而自动生成导出的变量和函数声明。
摘要由CSDN通过智能技术生成

这段时间又开始用 cmake 来进行代码的编译,顺便写个 Fluent UDF 的 CMakeLists.txt。功能主要是要根据源码文件来生产 udf_names.c,导出的变量和函数都在这里。


问题的关键在于源码文件内容的扫描,匹配,截取和输出。Fluent 自带的 Makefile 用的是 sed 来截取的。原本打算沿用 sed,但是发现调用老是出问题,引号问题太烦人。后来就用 cmake 自己的文件和字符串功能了。


#-----------------------------------------------------------------------------
#  udf_names.c
#
#-----------------------------------------------------------------------------
set (UDFDATA ${hylab_BINARY_DIR}/udf_names.c)

set (UDF_NAMES "" CACHE INTERNAL "" FORCE)
#
function(extract_udf_names l)
  foreach (line ${l})
    if(line MATCHES "^DEFINE_[_A-Z]*(.*$)")
       string(REGEX REPLACE "^DEFINE_([_A-Z]*\\(.*\\))$" "\\1" result ${line})       
       Message("-- ${result}")
       file(APPEND ${UDFDATA} "extern DEFINE_${result};\n")

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值