Это не то, как вы используете такую структуру каталогов. Вместо этого в App1/CmakeLists.txt
введите
add_executable(App1 app1.cpp)
target_link_libraries(App1 Base)
Это объявляет, что App1
зависит от Base
и должно быть связано с этой библиотекой. «Связывание» означает не только передачу правильных аргументов вашему компоновщику, но также передает флаги включения и другие параметры компилятору при сборке App1
источников.
Если вы намереваетесь создавать только части вашего проекта, вы можете использовать дополнительный аргумент для add_executable
, т.е.
add_executable(App1 EXCLUDE_FROM_ALL app1.cpp)
Таким образом, когда вы создаете цель по умолчанию, App1
не будет частью сборки. Вы все еще можете построить его вручную / по запросу, например, при работе с make-файлами
make App1
создаст исполняемый файл App1
и все, что для этого требуется.