【问题标题】:Limit CMake include_directories() scope?限制 CMake include_directories() 范围?
【发布时间】:2014-07-30 22:32:31
【问题描述】:

这是我的问题:

我喜欢(无论出于何种原因,如果有更好的方法,我愿意更改)将我的代码拆分为目录树结构,并将头文件与相应的源文件放在同一目录中。这很好用,除非我需要添加目录。添加新目录时,我调用include_directories(),并以新目录作为参数。

调用include_directories 会导致编译器包含每个文件的目录(即-I NEW_DIRECTORY),无论该文件是否实际依赖于该目录中的头文件。这会触发整个代码的重新构建,这是非常不可取的。

有没有更好的方法?我真的很想听听一些建议。

【问题讨论】:

    标签: compilation cmake


    【解决方案1】:

    看看target_include_directories

    include_directories 基于目录属性,这意味着调用include_directoriesCMakeLists.txt 的同一文件夹(或任何子文件夹)中的每个目标都会添加相应的包含目录。

    另一方面,target_include_directories 基于目标属性,这意味着您必须为每个目标(即项目中的每个库或可执行文件)再次调用它。优点是这通常是指定这些依赖项的更自然的方式。此外,指定为PUBLIC 的目录将自动被相关目标拉入,这是include_directories 不可用的功能。

    【讨论】:

    • 如何使用 target_include_directories() 和 add_subdirectory()?
    猜你喜欢
    • 2011-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-11
    • 1970-01-01
    • 1970-01-01
    • 2016-01-24
    相关资源
    最近更新 更多