【发布时间】:2017-01-14 11:12:30
【问题描述】:
今天我尝试使用“cmake + swig”的组合来为我的代码生成绑定。基本上它可以工作:
set(SWIG_EXECUTABLE "/usr/bin/swig")
find_package(SWIG REQUIRED)
include(${CMAKE_CURRENT_SOURCE_DIR}/UseSWIG.cmake)
set(CMAKE_SWIG_FLAGS -package example)
set(CMAKE_SWIG_OUTDIR "${CMAKE_CURRENT_SOURCE_DIR}/example")
set_source_files_properties(native.i PROPERTIES CPLUSPLUS ON)
SWIG_ADD_MODULE(core Java native.i lib.cpp)
include_directories(${CMAKE_CURRENT_SOURCE_DIR})
用这样的native.i:
%module native
%include "lib.hpp"
%{
#include "lib.hpp"
%}
但如果我更改 lib.hpp 构建系统 cmake build 不调用 swig 来重新生成代码。所以我必须touch native.i 才能让它工作,这很烦人。
我找到swig 的-M 选项来生成依赖项,
知道如何用它来修复UseSWIG.cmake吗?
UseSWIG.cmake 只使用add_custom_command 生成,
所以我需要以某种方式add_custom_command 依赖于动态文件集,
不是静态的?
【问题讨论】:
-
您是否尝试将 lib.hpp 添加到 SWIG_ADD_MODULE:
SWIG_ADD_MODULE(core Java native.i lib.cpp lib.hpp)? -
@wasthishelpful 是的,正如预期的那样,这没有帮助。
-
我认为这基本上是重复的:stackoverflow.com/q/31007635/168175 也许?
-
@Flexo 你是对的。
-
不幸的是,我不知道什么比恢复的补丁更好