При добавлении подкаталога cmake
обрабатывает файл CMakeLists.txt
только внутри этого подкаталога, не налагает какую-либо зависимость от создаваемой цели.
Это может помочь представить этот процесс просто как создание одного большого большого набора правил (для любой системы сборки, на которую он переводится) из всех добавляемых вами CMakeLists
файлов.
Однако, это только поместит правила для всех отдельных CMakeLists
целей в этом результирующем наборе правил, так что вы можете создавать эти цели по имени. Если вы решите построить цель в A
, которая у вас не указана зависит от B
(даже если это может на самом деле зависеть от нее), то B
не будет
Для этого вам нужно будет установить зависимости компоновщика, что-то вроде (в зависимости от имен и того, что B
генерирует, конечно):
cmake_minimum_required(VERSION 2.8)
project(A)
add_subdirectory(B)
target_link_libraries(A B)