gpt4 book ai didi

c++ - 如何使使用 AUTOUIC 添加的包含目录可用于下游目标?

转载 作者:太空狗 更新时间:2023-10-29 21:34:54 24 4
gpt4 key购买 nike

我的 qt 项目中的 CMake 的 AUTOUIC 选项有问题。

我有一个包含 *.ui qt-form 文件的目标,并将其更改为使用 AUTOUIC 选项自动生成相应的 ui_*.h 文件并将它们的位置添加到目标的包含目录中。

问题是,我将生成的“ui_*.h”文件包含在目标的 header 中,然后将其包含在另一个测试目标中。然而,测试目标没有将生成的文件设置为其包含目录的目录,因此将找不到 ui_*.h 文件。

那么有什么方法可以获取生成文件的目录,以便我可以将它添加到我的第一个目标的 INTERFACE_INCLUDE_DIRECTORIES 中。当我使用硬编码名称执行此操作时,它解决了我的编译错误,但我宁愿通过从某个目标属性左右获取该目录来执行此操作。我失败了,因为似乎只有在处理完所有 CMakeLists 文件后才添加 AUTOUIC 包含目录。

顺便说一句,我目前使用的是 CMake 3.8.2,但如果问题已经解决,可以选择更新到 3.9。

最佳答案

从 CMake 版本 3.9 开始,您可以使用以下代码片段将自动生成的 header 添加到目标的构建接口(interface)包含目录:

get_property(_isMultiConfig GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
if(_isMultiConfig)
set(AUTOGEN_INCLUDE_DIR ${CMAKE_CURRENT_BINARY_DIR}/${TARGET_NAME}_autogen/include_$<CONFIG>)
else()
set(AUTOGEN_INCLUDE_DIR ${CMAKE_CURRENT_BINARY_DIR}/${TARGET_NAME}_autogen/include)
endif()

target_include_directories(${TARGET_NAME} INTERFACE
$<BUILD_INTERFACE:${AUTOGEN_INCLUDE_DIR}>
)

参见:

关于c++ - 如何使使用 AUTOUIC 添加的包含目录可用于下游目标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44746308/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com