2016-10-08 4 views
0

C++ライブラリ用のGoインタフェースを生成しようとしています。ライブラリヘッダーの一つは、その後、私はifdefコードブロックのインタフェース生成を除外

library.i

%{ 
    #include <library.h> 
%} 
... 
%include <library.h> 
以下のようなインターフェースのヘッダを含む

... 
#ifndef DISABLE_FEATURE_X 
    struct TypeX 
    { 
    TypeX(); 
    { 
     ... 
    } 
    }; 
#endif 
... 

library.hこの

ようなコードブロックを有しています

マクロDISABLE_FEATURE_Xが定義されたGoインタフェースを生成すると、Swig generatたとえマクロによって除外されていても、TypeXのためのインターフェイスコードです。

インターフェイスを生成する際にコードブロックを除外するようにSwigに指示するにはどうすればよいですか?

%{ 
    #include <library.h> 
%} 
... 
#define DISABLE_FEATURE_X 
%include <library.h> 

はトリックを行う必要があります。

答えて

1

それを行うための最も簡単な方法は、SWIGプリプロセッサは、機能を見ないように、SWIGインタフェース内のマクロを定義することです。

SWIG自体も-Dコマンドライン引数をサポートしていますので、コンパイラの場合と同じようにswig -DDISABLE_FEATURE_X ...を呼び出すこともできます。

関連する問題