- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我的 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/
我正在使用 Jenkins 进行持续集成。我创建了单独的 View ,例如服务器 A 的 View A 、服务器 B 的 View B 等。 每个 View 都会根据服务器的环境属性构建我的项目。 但
我有以下伪代码: var queue = new BufferBlock(new DataflowBlockOptions { BoundedCapacity = 5 }); var a = new
我想这样做,但是在 Jenkins DSL 中: 如果在某个地方找到了这个,但它不工作: job('ps-first') { steps { shell('echo "landing"') }
我们的 API 中有一个路由(在调用时)会访问另一个第 3 方 API。 例如 HTTP-GET/account/1 这会从我们的数据库返回一些数据,并从.. 说 .. 像 Auth0/Okta/Sa
我是一名优秀的程序员,十分优秀!