Возможно, попытайтесь настроить свой CMakeLists.txt так, чтобы в каждом каталоге был проект , и "корневой" CMakeLists.txt, который просто делает add_subdirectory для всех подпроектов. ... тогда CMake сгенерирует файл решения или makefile в каждом каталоге проекта. Затем вы можете "зайти в" такой каталог и создать и очистить один проект.
Например, в одном из моих проектов у меня есть следующая структура:
projectroot/
applications/
appA
libraries/
libA
libB
В projectroot я настроил CMakeLists.txt так:
project(MyProject)
add_subdirectory(libraries)
add_subdirectory(applications)
В libraries/
я делаю следующее:
project(Libraries)
add_subdirectory(libA)
add_subdirectory(libB)
add_subdirectory(libC)
А затем в applications/
:
project(Applications)
add_subdirectory(appA)
В этом случае я могу войти в projectroot/applications/appA
и вызвать make
или msbuild appA.sln
, и он начнет сборку libA, B, C и затем appA. Точно так же вы можете позвонить make clean
или msbuild /t:Clean appA.sln
.
Дополнительным преимуществом дополнительного каталога для всех библиотек является то, что я могу создать их сразу, запустив make
или msbuild libraries.sln
в libraries/
dir.