【问题标题】:CMake Swig: how to add depencencies on included .i filesCMake Swig:如何在包含的 .i 文件上添加依赖项
【发布时间】: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 的错误。

谢谢

【问题讨论】:

    标签: swig


    【解决方案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,则构建完整的解决方案。

    【讨论】:

      猜你喜欢
      • 2017-01-14
      • 1970-01-01
      • 2013-04-17
      • 1970-01-01
      • 2011-12-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-07
      相关资源
      最近更新 更多