这段时间又开始用 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")

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

被折叠的 条评论
为什么被折叠?



