0

メインの cpp ファイルに、コンパイル前に型を選択するための typedef とプリプロセッサ ディレクティブを使用して、特定の型のテンプレート アルゴリズムを実装するバイナリをインスタンス化できるディレクティブのセットがあるとします。

 #ifdef MS1
     typedef  MSVariableInterface1 InterfacorType;
  #else
       #ifdef MS2
           typedef  MSVariableInterface2 InterfacorType;
       #endif
  #endif

int main()
 {...        //use InterfacorType as the type for template

プリプロセッサ変数のさまざまな可能な値を認識して、さまざまなテンプレートのインスタンス化を使用して、cmakelists がコードを自動的にコンパイルするようにしたいと考えています。どうすればそれができるか知っていますか?

さらに、これは問題に対処する正しい方法ではないと思います。各テンプレートを使用できるタイプのセットを考慮して、(オプションで複数の) テンプレート コードのさまざまなインスタンス化を「展開」する別の提案があります。このようなソリューションを使用すると、インスタンスごとにバイナリを作成するのではなく、単一のバイナリを作成してすべてのケースを処理できます (対象のインスタンスを選択できる引数を使用)。ありがとう!

4

1 に答える 1

0

add_definitionsを使用して有効にすることができます:

add_definitions(-DMS1)
于 2012-12-09T06:08:39.990 に答える