JetBrains CLion не генерирует цель для многоуровневого проекта - PullRequest
0 голосов
/ 11 июля 2020

У меня есть многоуровневый проект в 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 начал обнаруживать цели, но я не понимаю, как эти две вещи связаны друг с другом

...