首页 > 解决方案 > 现代 CMake target_include_directories 包括别名

问题描述

这是项目结构的示例:

CMakeLists.txt
  A/
    includes/a.h
    src/a.cpp
    CMakeLists.txt
  B/
    includes/b.h
    src/b.cpp
    CMakeLists.txt

这是我的 CMake 配置的总结

cmake_minimum_required(VERSION 3.16)

project("WeedEngine")

# add_subdirectory(A)
add_library(A src/a.cpp)

target_include_directories(A PUBLIC includes)

# add_subdirectory(B)
add_library(B src/b.cpp)

target_link_libraries(B PRIVATE A)

我想像这样在我的 b.cpp 中链接我的 lib A 中的标头

// b.cpp
#include "A/a.h"

但我无法正确地为我的标题提供别名。我应该使用这样的东西:

target_include_directories(A
    PUBLIC
    $<TARGET_NAME:${CMAKE_CURRENT_SOURCE_DIR}/includes>
)

此致,

标签: cmakecompilationinclude

解决方案


推荐阅读