Compilation 是否限制CMake include_directories()范围?
所以我的问题是: 我喜欢(无论出于何种原因,如果有更好的方法,我愿意更改)将我的代码拆分为目录树结构,并将头文件放在与相应源文件相同的目录中。这很好,除了需要添加目录的时候。当我添加一个新目录时,我使用新目录作为参数调用Compilation 是否限制CMake include_directories()范围?,compilation,cmake,Compilation,Cmake,所以我的问题是: 我喜欢(无论出于何种原因,如果有更好的方法,我愿意更改)将我的代码拆分为目录树结构,并将头文件放在与相应源文件相同的目录中。这很好,除了需要添加目录的时候。当我添加一个新目录时,我使用新目录作为参数调用include\u directories() 调用include_directories会导致编译器包含每个文件的目录(即-i NEW_directory),而不管该文件是否实际依赖于该目录中的头文件。这会触发整个代码的重新构建,这是非常不受欢迎的 有更好的办法吗?我真的很想听
include\u directories()
调用include_directories
会导致编译器包含每个文件的目录(即-i NEW_directory
),而不管该文件是否实际依赖于该目录中的头文件。这会触发整个代码的重新构建,这是非常不受欢迎的
有更好的办法吗?我真的很想听听你的建议。看看
include_目录
基于目录属性,这意味着调用include_目录
的CMakeLists.txt
的同一文件夹(或任何子文件夹)中的每个目标都将添加相应的include目录
另一方面,target\u include\u目录
基于目标属性,这意味着您必须为每个目标(即项目中的每个库或可执行文件)再次调用它。优点是,这通常是指定这些依赖关系的更自然的方式。此外,指定为PUBLIC
的目录将由相关目标自动拉入,这是include\u目录
中不可用的功能。请查看
include_目录
基于目录属性,这意味着调用include_目录
的CMakeLists.txt
的同一文件夹(或任何子文件夹)中的每个目标都将添加相应的include目录
另一方面,
target\u include\u目录
基于目标属性,这意味着您必须为每个目标(即项目中的每个库或可执行文件)再次调用它。优点是,这通常是指定这些依赖关系的更自然的方式。此外,指定为PUBLIC
的目录将由相关目标自动拉入,这是include\u目录
无法使用的功能。如何将target\u include\u目录()与add\u子目录()一起使用?如何将target\u include\u目录()与add\u子目录()一起使用?