如何告诉cmake用autouic生成的ui文件在哪里

Vya*_*lav 5 qt cmake

我的主窗口类包括:

#include "mainwindow.h"
#include "ui_mainwindow.h"
Run Code Online (Sandbox Code Playgroud)

通过 cmake选项ui_mainwindow.h从文件生成的源文件在哪里:mainwindow.uiAUTOUIC

set(CMAKE_AUTOUIC ON)
Run Code Online (Sandbox Code Playgroud)

但是,如果我在另一个名为“build”的文件夹中进行构建并ui_mainwindow.h在那里生成:

cmake_qt_project\build\ui_mainwindow.h
Run Code Online (Sandbox Code Playgroud)

如何修复构建以ui_mainwindow.h从另一个目录包含,或者如果没有这种可能性在src/dir 中生成它?

我也不能将它包含在源文件中

 #include "build/ui_mainwindow.h"
Run Code Online (Sandbox Code Playgroud)

我需要保留在我想要的任何目录中进行构建的可能性。

Dev*_*lar 5

将您的构建目录添加到搜索包含文件的目录列表中:

include_directories( ${CMAKE_BINARY_DIR} )
Run Code Online (Sandbox Code Playgroud)

  • 实际上,`include_directories( "${CMAKE_CURRENT_BINARY_DIR}" )` 更正确。请注意阅读,这仅适用于 CMake 3.7 及更早版本。从 3.8 开始,这是“固定的”。 (2认同)