静态链接到swig包装器

时间:2016-12-20 14:40:36

标签: cmake swig

我有一个用于C ++库(mylib.so)的工作swig包装器。现在我想静态地将mylib.so链接到包装器库(mylib_wrapper.so)。目前我用cmake构建我的包装器。

  1. 如果需要,包装的库应该是静态库(不是动态的) 我的swig包装器中有静态链接吗?
  2. 我应该在界面/ cmake文件中做些什么修改?
  3. 目前我有以下cmake文件:

    cmake_minimum_required(VERSION 2.8)
    
    find_package(SWIG REQUIRED)
    include(${SWIG_USE_FILE})
    find_package(Ruby)
    include_directories(${RUBY_INCLUDE_PATH} ${CMAKE_CURRENT_SOURCE_DIR})
    
    set(CMAKE_SWIG_FLAGS "")
    set(MODULE_NAME ruby_module)
    set(CMAKE_SWIG_OUTDIR ${CMAKE_LIBRARY_OUTPUT_DIRECTORY})
    
    set_source_files_properties(${MODULE_NAME}.i PROPERTIES CPLUSPLUS ON)
    
    swig_add_module(${MODULE_NAME} ruby ${MODULE_NAME}.i ruby_wrapper.cpp)
    swig_link_libraries(${MODULE_NAME} ${MAIN_LIBRARY_NAME})
    swig_link_libraries(${MODULE_NAME} ${RUBY_LIBRARIES})
    

    和.i文件:

    %module ruby_module
    
    %{
    #include "ruby_wrapper.h"
    %}
    
    %import std_string.i
    
    %include "ruby_module.h"
    

    和头文件: ruby​​_module.h和ruby_wrapper.h 具有相同的内容。

    #include <string>
    
    class MyClass
    {
    public:
      MyClass();
      ~MyClass();
    
    public:
      std::string myfunc(const std::string& path);
    };
    

    在ruby_wrapper.cpp文件中是mylib.so的覆盖函数。

0 个答案:

没有答案