gpt4 book ai didi

QT : header in . 用户界面文件

转载 作者:行者123 更新时间:2023-12-02 14:07:08 24 4
gpt4 key购买 nike

我想知道如何制作<header>files.ui与 cmake 一起使用自定义小部件。

我有这样的 CMakeLists :

cmake_minimum_required(VERSION 3.0.0 FATAL_ERROR)

project(qtelec C CXX)

set(CMAKE_PREFIX_PATH $ENV{HOME}/Qt5.6.0/5.6/gcc_64)
set(SRC_BASE_DIR "../../../qtelec")
set(COREALPI_BUILD_DIR "../../../../corealpi/build")

set(CMAKE_AUTOMOC ON)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTORCC ON)

find_package(Qt5Widgets REQUIRED)

file(GLOB_RECURSE SRC_FILES
${SRC_BASE_DIR}/src/*.h
${SRC_BASE_DIR}/src/*.cpp
)

link_directories(${COREALPI_BUILD_DIR}/elec)
link_directories(${COREALPI_BUILD_DIR}/elec/core)

add_library(qtelec SHARED
${SRC_FILES}
)

add_subdirectory(${SRC_BASE_DIR}/../platform/cmake/qtutils ${CMAKE_BINARY_DIR}/qtutils)
include_directories(${SRC_BASE_DIR}/../external/qtpropertybrowser/latest/src)
include_directories(${SRC_BASE_DIR}/../qtutils/src)
#include_directories(${SRC_BASE_DIR}/src/widgets)
include_directories(${COREALPI_BUILD_DIR}/../include/ca)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")

target_link_libraries(qtelec qtpropertybrowser elec core qtutils Qt5::Widgets)

cmake ..有效,但是 cmake --build .给我以下错误:

[ 65%] Building CXX object CMakeFiles/qtelec.dir/home/mea/workspace/repos/qtelec/qtelec/src/forms/conversionform.cpp.o
In file included from /home/mea/workspace/repos/qtelec/qtelec/src/forms/conversionform.cpp:2:0:
/home/mea/workspace/repos/qtelec/build/ui_conversionform.h:18:40: fatal error: ../widgets/canecoboxwidget.h: Aucun fichier ou dossier de ce type
compilation terminated.

如果我查看我的 conversionform.ui ,我会看到类似的内容(在其他 files.ui 中也有):

<customwidgets>
<customwidget>
<class>CanecoBoxWidget</class>
<extends>QWidget</extends>
<header>../widgets/canecoboxwidget.h</header>
<container>1</container>
</customwidget>
</customwidgets>

但问题是我的 ui_ generated 文件位于我的构建文件夹中,因此当 cmake 尝试查找路径 ../widgets/ 时他不存在。这是我的文件夹结构:

├── build
├── qtelec
│ ├── src
│ └── *.h
│ └── *.cpp
│ └── editors
│ └── *.h
│ └── *.cpp
│ └── *.ui
│ └── forms
│ └── *.h
│ └── *.cpp
│ └── *.ui
│ └── widgets
│ └── *.h
│ └── *.cpp
│ └── *.ui
├── cmake/CMakelists.txt

我发现的唯一解决方案是包含目录 include_directories(${SRC_BASE_DIR}/src/widgets) .

但我认为 CMake 或 QT 中有其他方法可以使其工作而无需额外包含?

在.pro文件中,不需要包含此文件夹。

您能帮我找到解决方案吗?

如果您想了解更多信息,我可以提供。

感谢您的帮助。

最佳答案

从 .ui 文件生成的文件放置在 ${CMAKE_BINARY_DIR} 中,而不是 ${CMAKE_SOURCE_DIR} 中。在您的情况下,它是 /home/mea/workspace/repos/qtelec/build/。如您所见,没有 /home/mea/workspace/repos/qtelec/build/../widgets/canecoboxwidget.h

正确的解决方案是使用 qt_wrap_ui我猜是命令。

关于QT : header in . 用户界面文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37298656/

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