私は多くの形質タイプを持つプロジェクトに取り組んでいます。同じコードベースのすべての特性をコンパイルすると、リリースされたバイナリはかなり大きくなります。C++:どのように特定のバイナリ(実行可能ファイル)を作成するのですか?
私は、特定の特性ごとにバイナリを構築するためにマクロを使用することを考えています。ビジネスロジックの観点からは、これは完全に意味があります。
しかし、コードベースを削減したい場合、各テンプレートcppファイルの最後に/ elifファイルを置く必要があります。これは非常に退屈なことのように聞こえる。
この種の問題が発生したことがあるのではないかと疑問に思っていますが、ここで最もすばらしい解決策は何ですか?
#include "MyTraits.hpp"
#include "Runner.hpp"
int main(){
#if defined USE_TRAIT_1
Runner<Trait1> a;
#elif defined USE_TRAIT_2
Runner<Trait2> a;
#elif defined USE_TRAIT_3
Runner<Trait3> a;
#endif
return 0;
}
私は型定義のセットを定義し、一般的なテンプレート関数を呼び出すよりなり、それぞれが5つの異なるmain_のcppファイルを、ちょうど持っています。 –
SergeyA
あなたの解決策は私によく見えます。それらのトンが多ければ、あなたのコードベースを解析してメイン関数とmakefile(または同様のもの)を生成するためのスクリプトを書くことができます。 'Runner USE_TRAITがあなたのmakeファイルにある場合 –
JeffCharter
具体的なやり方ではなく、' Runner a; 'を実行する方が簡単かもしれません。' -DUSE_TRAIT_1'でコンパイルするのではなく、 '-DTRAIT = Trait1'(使用しているビルドシステムに応じて適切に定義) –
Justin