私はライブラリを作成し、そのライブラリをプログラムで使用しています。私はよくプログラム コードを変更し、アサートをオンにしてテストを実行し、テストに合格したら、アサートをオフにしてベンチマークを実行し、行った変更によるパフォーマンスへの影響を測定します。また、テスト用のライブラリでアサートをオンにし、ベンチマーク用のライブラリでアサートをオフにしたいと考えています。そのため、プログラムとライブラリでアサート設定を同時に切り替える必要が頻繁に生じます。
ライブラリとプログラム (ライブラリを使用する) のアサート設定 (NDEBUG) を一致させることは、手動で行うべきではありません。ヘッダーにアサートがあるため、間違っていると未定義の動作を意味し (定義の競合により未定義の動作が発生します)、実際にクラッシュが発生するためです。 assert-on ライブラリを使用して assert-off プログラムをビルドすると、GCC を使用してプログラムを作成できません。これを行う標準的な方法が何であるかを見つけることができませんでした。ライブラリ ビルド システムに libfoo-1.0 と libfoo-assert-1.0 またはそのような名前の 2 つのバイナリ (および、間違ったアサート設定 (NDEBUG) が含まれていると文句を言うヘッダー) をインストールすることを検討しています。
ライブラリとプログラムの間で assert 設定を一致させ、同時に両方の assert 設定を切り替えるのが簡単、迅速、そしてエラーが発生しにくいようにする最善の方法は何ですか?