デフォルトのプリプロセッサ定義を使用して、プラットフォームとコンパイラに基づいてコードのどの部分をコンパイルする必要があるかを判断する「クリーンな方法」を見つけようとしています。
私の現在のテスト セットアップには、Visual C++ コンパイラを搭載した Windows マシンと g++ コンパイラを搭載した Debian が含まれています。
現在、私は次のようなものを持っています:
#if defined (__GNUG__)
#define ASMMath_EI __attribute__ ((__visibility__("default")))
#elif defined (WIN32)
#ifdef ASMMath_EXPORTS
#define ASMMath_EI __declspec(dllexport)
#else
#define ASMMath_EI __declspec(dllimport)
#endif
#endif
extern void ASMMath_EI AsmProblemOne();
そしてそれは機能しますが、私がチェックできるより良い定義がいくつかあるかもしれませんし、そうでなければならないと思います. それとも、CMake を使ったもっと理想的な方法でしょうか? 提案?