У меня есть многоуровневый проект в CLion на Ubuntu 18.04: CMakeList.txt верхнего уровня выглядит так:
cmake_minimum_required(VERSION 3.10)
project(tesser-solution)
add_subdirectory("${PROJECT_SOURCE_DIR}/core" "${PROJECT_SOURCE_DIR}/core")
add_subdirectory("${PROJECT_SOURCE_DIR}/core-utest" "${PROJECT_SOURCE_DIR}/core-utest")
add_subdirectory("${PROJECT_SOURCE_DIR}/app" "${PROJECT_SOURCE_DIR}/app")
Где базовый CMakeList.txt генерирует:
- core.a
- core-utest.bin (модульные тесты на основе GTest framework)
- app.bin
соответственно. Предположим, CMakeList.txt из app.bin выглядит следующим образом:
cmake_minimum_required(VERSION 3.10)
project(app)
set(CMAKE_CXX_STANDARD 14)
include_directories(some_dir)
find_package(Threads)
add_executable(app
main.cpp)
target_link_libraries(app <dependent_libs>)
Если я открою файл CMakeList.txt верхнего уровня, CLion не распознает и не создаст цели сборки для моих целей, определенных во вложенных папках. Однако, если я открою проект «приложение» напрямую, CLion найдет цель, определенную в нем.
Примечание: я нашел это сообщение:
https://intellij-support.jetbrains.com/hc/en-us/community/posts/360008083079-Working-with-an-existing-nested-cmake-project
, где они относятся к примеру проекта:
https://github.com/anastasiak2512/Calendar
, но в моем случае у меня нет исходного файла верхнего уровня. По сути, в моем каталоге верхнего уровня нет ничего, кроме CMakeList.txt
Кто-нибудь может мне помочь, как это исправить?
Обновление: Я удалил второй параметр макроса add_subdirectory, и CLion начал обнаруживать цели, но я не понимаю, как эти две вещи связаны друг с другом