Файл заголовка CMake, который включает файлы заголовков из другого каталога - PullRequest
0 голосов
/ 05 августа 2020

Учитывая это дерево:

project
 + lib
    + include
        + include_both.h
    + source
        + file1.cpp
        + file1.h
        + file2.cpp
        + file2.h
 + main_dir
    + main.cpp

После связывания lib с main_dir с помощью CMake я хотел бы, чтобы файлы заголовков file1.h и file2.h не были видны из основного. cpp. Я хочу, чтобы библиотеку можно было включать только с помощью заголовочного файла include_both.h. Как это можно сделать и нужно ли вообще это делать?

1 Ответ

1 голос
/ 05 августа 2020

Вы можете попробовать сделать каталог include каталогом PUBLIC, чтобы он был виден потребителям библиотеки, но оставьте каталог source закрытым:

add_library(MyLib SHARED 
    source/file1.cpp
    source/file2.cpp
)

target_include_directories(MyLib 
    PUBLIC  include
    PRIVATE source
)
...