Error de enlace con cmake

Estoy tratando de entender por qué recibo un error de vinculación al compilar un proyecto generado con CMake.

El CMakeFiles.txt crea una biblioteca estática para cada carpeta del proyecto y luego las vincula a todas de la siguiente manera:

,
# root CMakeLists.txt

add_subdirectory(subfolder1)
add_subdirectory(subfolder2)
add_subdirectory(...)

add_executable(target ${SOURCES})

set(LIBRARIES
  LIB_FOO
  LIB_BAR
  ...
)

target_link_libraries(target
  ${LIBRARIES}
)

entonces en cada subcarpeta tengo un simple CMakeLists.txt como

file(GLOB FOO_SOURCE *.cpp)
add_library(LIB_FOO ${FOO_SOURCE})

Ahora esto funciona y compila todo bien, pero obtengo una referencia indefinida al vincular, así que traté de investigar si todo estaba disponible al final y parece que sí. El error real es el siguiente:

libLIB_WORLD.a(World.cpp.o): In function `World::generate(WorldGenOptions)':
World.cpp:(.text+0x803): undefined reference to `MapGenerator::MapGenerator(BlockMap*)'
World.cpp:(.text+0x837): undefined reference to `MapGenerator::generate(bool, WorldGenOptions)'

Ahora, MapGenerator.cpp es parte deLIB_MAP, así que verifiqué si el archivo existe y contiene los símbolos:

:~$ nm libLIB_MAP.a | grep generate
....
00000000000044dc T _ZN12MapGenerator8generateEb15WorldGenOptions

:~$ nm CMakeFiles/LIB_MAP.dir/MapGenerator.cpp.o | grep generate
....
00000000000044dc T _ZN12MapGenerator8generateEb15WorldGenOptions

Entonces, el símbolo está presente, en este punto verifiqué si estaba correctamente vinculado por ld:

:~$ make VERBOSE=1
/usr/bin/g++  ... libLIB_MAP.a libLIB_WORLD.a ...

Por lo tanto, en realidad está presente en la fase de enlace junto con la otra biblioteca que no puede encontrar el símbolo.

¿Hay algo trivial que me estoy perdiendo? Soy bastante nuevo en CMake, así que no tengo ideas.

Respuestas a la pregunta(1)

Su respuesta a la pregunta