首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

CMake目标INTERFACE_INCLUDE_DIRECTORIES是否自动添加到父INCLUDE_DIRECTORIES?

在CMake中,INTERFACE_INCLUDE_DIRECTORIES是一个目标属性,用于指定目标的头文件搜索路径。当一个目标被设置了INTERFACE_INCLUDE_DIRECTORIES属性后,它的头文件搜索路径会被自动添加到依赖该目标的其他目标的编译选项中。

然而,INTERFACE_INCLUDE_DIRECTORIES并不会自动添加到父目录的INCLUDE_DIRECTORIES属性中。INCLUDE_DIRECTORIES属性是用于指定当前目录下的头文件搜索路径,而不会自动继承子目录的头文件搜索路径。

如果希望将INTERFACE_INCLUDE_DIRECTORIES添加到父目录的INCLUDE_DIRECTORIES属性中,可以使用CMake的变量和函数来实现。首先,将INTERFACE_INCLUDE_DIRECTORIES的值存储到一个变量中,然后使用PARENT_SCOPE选项将该变量传递给父目录。在父目录中,可以使用SET命令将该变量的值添加到INCLUDE_DIRECTORIES属性中。

下面是一个示例:

子目录CMakeLists.txt:

代码语言:txt
复制
target_include_directories(MyTarget INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/include)

父目录CMakeLists.txt:

代码语言:txt
复制
add_subdirectory(subdirectory)
get_target_property(MyTarget_INCLUDE_DIRECTORIES MyTarget INTERFACE_INCLUDE_DIRECTORIES)
set(MyTarget_INCLUDE_DIRECTORIES ${MyTarget_INCLUDE_DIRECTORIES} PARENT_SCOPE)

这样,INTERFACE_INCLUDE_DIRECTORIES的值就会被添加到父目录的INCLUDE_DIRECTORIES属性中,从而使得父目录下的其他目标也能够找到该目录的头文件。

腾讯云相关产品和产品介绍链接地址:

腾讯云产品:云服务器CVM 产品介绍链接地址:https://cloud.tencent.com/product/cvm

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

没有搜到相关的沙龙

领券