【问题标题】:CMAKE: target_include_directories and include_directories [duplicate]CMAKE:target_include_directories 和 include_directories [重复]
【发布时间】:2019-01-28 08:42:01
【问题描述】:

我正在阅读一个大项目的cmakelist文件,对target_include_directoriesinclude_directories的用法感到困惑。

include_directories 应该能够将所有头文件添加到编译器搜索的路径。但是我仍然在子目录的 cmakelist 文件中看到一些target_include_directories,它们为特定目标指定了一些包含路径。

谁能解释这两个的用法?就我而言,将头文件的所有路径添加到include_directories就足够了。

【问题讨论】:

  • include_directories 命令可用于添加所有(或至少多个)目标所需的全局目录。 target_include_directories 命令可用于添加特定目标所需的单个路径。

标签: cmake


【解决方案1】:

include_directories 适用于特定 CMakeLists.txt 文件中的所有目标。例如,假设你有

include_directories( ../include
   ${SOME_OTHER_PATH}/include
)

add_library(math ${MATH_SOURCES})

target_include_directories(math 
    math_include
)

add_executable(calculator ${MYCALCULATOR_SOURCES})   

target_include_directories(calculator 
    calc_include
)

calculator 是一个可执行目标,math 是在同一个 CMakeLists.txt 中定义的库目标。文件夹../include${SOME_OTHER_PATH}/include 对两者都可见。这意味着 cmake 将在编译它们的源代码时将选项 -I../include -I<expanded-some-other-path>/include 添加到这两个目标。

对于target_include_directories,包含路径calc_include 仅适用于calculator 目标,math_include 仅适用于math 目标。如指定的那样,math_includecalc_include 将(通常)是包含 CMakeLists.txt 文件的同一文件夹中的子文件夹。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-27
    • 1970-01-01
    • 1970-01-01
    • 2015-11-05
    • 2011-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多