包含来自其他目录的头文件的 CMake 头文件

CMake header file that includes header files from other directory

给定这棵树:

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

在使用 CMake 将 lib 链接到 main_dir 之后,我希望头文件 file1.h 和 file2.h 在 main.cpp 中不可见。我希望库只能由 include_both.h 头文件包含。如何做到这一点,我应该这样做吗?

您可以尝试将 include 目录设为 PUBLIC 目录,这样图书馆的使用者就可以看到它,但请将 source 目录设为私有:

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

target_include_directories(MyLib 
    PUBLIC  include
    PRIVATE source
)