CMake Swig:如何在包含的 .i 文件上添加依赖项
Posted
技术标签:
【中文标题】CMake Swig:如何在包含的 .i 文件上添加依赖项【英文标题】:CMake Swig: how to add depencencies on included .i files 【发布时间】:2021-12-21 01:07:26 【问题描述】:我正在使用 cmake 创建基于 swig 的绑定。
我像这样添加我的 swig 库。
SWIG_ADD_LIBRARY(my_swig_DLL
LANGUAGE
Java
SOURCES
myfile.i
)
一切正常,但 CMake 无法检测到我的 myfile.i 中包含的文件何时发生更改。例如,我的文件。包含该行
%include "my_other_file.i"
另一个文件本身不包含模块,但包含我在各种项目中使用的支持代码。
如何让 CMake 检测到 my_other_file 中的更改,以便在文件更改时重新编译所有内容?
快速提示:在源列表中添加 my_other_file.i 会生成文件不包含 %module 的错误。
谢谢
【问题讨论】:
【参考方案1】:可能不是实现这一目标的最佳方式,但我找到了这个宏
function(watch)
set_property(
DIRECTORY
APPEND
PROPERTY CMAKE_CONFIGURE_DEPENDS $ARGV
)
endfunction()
所以现在,我已将包含的 .i 文件重命名为 myinclude.inc_i,这样 cmake/swig 就不会直接处理它们(但至少它们出现在我的解决方案中),然后我“观看”然后使用之前定义的宏
watch(myinclude.inc_i)
如果修改了 myinclude.inc_i,则构建完整的解决方案。
【讨论】:
以上是关于CMake Swig:如何在包含的 .i 文件上添加依赖项的主要内容,如果未能解决你的问题,请参考以下文章
CMake 访问 SWIG 并将 java 库链接到现有 C++ 项目的问题