Здравствуйте, cheqa, Вы писали:
C>Собственно, этого и хотелось избежать. Т.е. мне всё равно придётся проверять по дефайнам, что что-то в сборку входит, и дёргать оттуда символ. Принципиально ничем не отличается от варианта со свитчём.
Не прийдётся.
Ты просто явно генеришь один исходник по списку играющих в эту игру билиотек прямо в своём билдовом скрипте. И всё. Типа списко вида lib1, lib2, lib3 у тебя уже должен же быть?
Исходник генеришь вида:
#include "LinkStaticRegistrarEnforcers.h"
namespace LinkStaticRegistrarEnforcers {
static StaticLibEnforcer usedLibs[] = { lib1, lib2, lib3 };
void CheckAll() { StaticLibEnforcer::CheckAll( usedLibs ); }
}
LinkStaticRegistrarEnforcers::CheckAll дёргаешь всегда, даже если он пустой. Фабрику же ты всё равно линкуешь? Вот делаешь у этой фабрики статический метод init( bool checkUnusedRegistrars = false ), а из него уже дёргаешь, если передали true...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском