как внести структуру в Modern CMake, включить пути - PullRequest
0 голосов
/ 27 мая 2018

Я пытаюсь использовать современный cmake, и я столкнулся с проблемой, когда во всех моих операторах #include нет папок, и это чертовски запутанно. Вот пример

Структура проекта:

root:
  - CMakeLists.txt
  - core
    - CMakeLists.txt
    - core.h
    - core.cpp
  - bin
    - bin.cpp
    - CMakeLists.txt
  - other_dirs
  - ...

Root CMakeLists.txt

cmake_minimum_required(VERSION 3.1)
project(scratch)

add_subdirectory(core)
add_subdirectory(bin)

bin / CMakeLists.txt

add_executable(x2_cli x2_cli.cpp)
target_link_libraries(x2_cli core)

core / CMakeLists.txt

add_library(core core.cpp core.h)
target_include_directories(core PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})

Я хотел бы написать свои включаемые операторы наподобие #include "core/core.h", но с этой стратегией мне нужно просто написать #include "core.h".Я думаю, что это очень сбивает с толку, потому что вы не понимаете, какие заголовочные файлы принадлежат каким библиотекам!

Есть ли способ исправить это, что также не позволяет мне #include создавать вещи из других папок, которые яне должен?Например, #include other_dir/bad.h в идеале должно произойти сбой во время компиляции.Нужна ли другая структура каталогов?Может быть, есть CMake способ сделать это?

Просто написать target_include_directories(core PUBLIC ..) недостаточно, потому что это загрязняет мой путь включения и вводит в заблуждение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...