Копай в сторону опций линкера - в команде линковки библиотека есть и cmake тут не при чём. Более того, если в testa.cpp создать экземпляр TestB, символы из sub_module будут прилинкованы.
Так что либо разбирайся как заставить линкер прилинковать ненужный код, либо экспортируй из sub_module не статическую либу, а список исходников и его добавляй к исходникам верхнего уровня.