Этот ответ немного не в моей голове, поэтому возьмите его с крошкой соли.
В своем исходном коде сделайте следующее:
#ifdef Version_1_0
#include "Header_1_0.h"
#endif
#ifdef Version_2_0
#include "Header_2_0.h"
#endif
В CMakeLists.txt файл делает это:
add_library ( Foo_Version_1_0 SHARED Foo.cxx Header_1_0.h )
# When you compile Foo_Version_1_0, define "Version_1_0"
set_target_properties ( Foo_Version_1_0 PROPERTIES COMPILE_FLAGS -DVersion1_0 )
# Likewise for Version_2_0
...
Когда вы закончите сборку, у вас должно быть две библиотеки с именами libFoo_Version_1_0.so и libFoo_Version_2_0.so.
Cheers,
-dan