相关疑难解决方法(0)

用什么而不是`qt5_use_modules`?

Qt的5 CMake的手册指出所述qt5_use_modules宏弃用:

这个宏已经过时了.请将target_link_libraries与IMPORTED目标一起使用.

...但qt5_use_modules不仅仅是指定链接库:它指定包含目录,必要的编译标志等(请参阅上面链接文档中的完整描述).

那么,假设变量QTMODULES包含一些应该用于项目的Qt模块列表,那么替换以下"已弃用"的CMake线的"推荐"方法是什么?

qt5_use_modules(${myProjectName} ${QTMODULES})
Run Code Online (Sandbox Code Playgroud)

以下不起作用,主要是因为它不添加任何Qt包含路径:

    target_link_libraries(${myProjectName} IMPORTED ${QTMODULES})
Run Code Online (Sandbox Code Playgroud)

QTMODULES变量是否需要手动迭代,以便include_directories可以为每个单独的模块名称调用?这似乎是向后退一步qt5_use_modules,这很简单,"只是有效".我错过了什么吗?

c++ qt cmake qt5

11
推荐指数
1
解决办法
4993
查看次数

QQuick与CMake:样式不起作用

我愿意在Qt Quick Controls 2和C ++中的CMake项目中使用样式。而且我很难使颜色正确。

C ++,qml和样式代码来自qt博客,并且只要我使用.pro项目文件,它就可以正常工作,但是当我转向CMakeLists.txt时,我无法正确设置颜色(我相信它们是默认的颜色深色/紫色,而不是深色/橙色)。

.pro项目中,我的main.cpp如下所示:

#include <QGuiApplication>
#include <QQmlApplicationEngine>
#include <QQuickStyle>

int main(int argc, char *argv[])
{
    QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
    QGuiApplication app(argc, argv);

    QQuickStyle::setStyle("Material");

    QQmlApplicationEngine engine;
    engine.load(QUrl(QLatin1String("qrc:/main.qml")));

    return app.exec();
}
Run Code Online (Sandbox Code Playgroud)

我的qml.qrc文件看起来像这样:

<!DOCTYPE RCC>
<RCC>
    <qresource prefix="/">
        <file>main.qml</file>
        <file>CustomLabel.qml</file>
        <file>PageBackground.qml</file>
        <file>SideBar.qml</file>
        <file>SideBarForm.ui.qml</file>
        <file>Light.qml</file>
        <file>LightForm.ui.qml</file>
        <file>Heating.qml</file>
        <file>HeatingForm.ui.qml</file>
        <file>Security.qml</file>
        <file>SecurityForm.ui.qml</file>
        <file>qtquickcontrols2.conf</file>
    </qresource>
</RCC>
Run Code Online (Sandbox Code Playgroud)

和我的qtquickcontrols2.conf文件是这样的:

[Controls]
Style=Material

[Universal]
Theme=Dark
Accent=DeepOrange

[Material]
Theme=Dark
Accent=DeepOrange
Run Code Online (Sandbox Code Playgroud)

现在,我的CMake项目文件夹包含完全相同的文件(实际上是.pro项目文件夹的副本和粘贴),除了我删除了.pri.pro文件,现在它包含一个CMakeLists.txt …

cmake qtquickcontrols2

6
推荐指数
1
解决办法
2703
查看次数

Cmake和QT5 - Include只接受一个参数

来自这个主题: Ubuntu CMake添加到CMAKE_MODULE_PATH的路径

我尝试在我的项目中运行QT5,因为QT4不允许我包含QWebView.

按照上述主题的指南,我现在有一个CMakeList.txt:

cmake_minimum_required (VERSION 2.6 FATAL_ERROR)
project (simpleTree)
find_package(Qt5 REQUIRED COMPONENTS Widgets Core) 
find_package (VTK REQUIRED)
find_package (PCL 1.8.0 REQUIRED)

include_directories (${PCL_INCLUDE_DIRS})
link_directories (${PCL_LIBRARY_DIRS})
add_definitions (${PCL_DEFINITIONS})

set (project_SOURCES export/exportply.cpp export/writecsv.cpp main.cpp
         controller.cpp 
         gui/pclviewer.cpp
         import/importpcd.cpp 
         method/SphereFollowing.cpp 
         Model/crown.cpp 
         Model/Cylinder.cpp 
         Model/Segment.cpp 
         Model/Tree.cpp)
set (project_HEADERS controller.h 
         export/writecsv.h
         export/exportply.h
         gui/pclviewer.h
         import/importpcd.h 
         method/SphereFollowing.h 
         Model/crown.h 
         Model/Cylinder.h 
         Model/Segment.h 
         Model/Tree.h)
set (project_FORMS   gui/pclviewer.ui)
set (VTK_LIBRARIES vtkRendering vtkGraphics vtkHybrid QVTK)

QT5_WRAP_CPP (project_HEADERS_MOC   ${project_HEADERS})
QT5_WRAP_UI  (project_FORMS_HEADERS ${project_FORMS})

INCLUDE (${QT_USE_FILE})
ADD_DEFINITIONS (${QT_DEFINITIONS})
ADD_EXECUTABLE (simpleTree ${project_SOURCES}
               ${project_FORMS_HEADERS}
               ${project_HEADERS_MOC})

TARGET_LINK_LIBRARIES (simpleTree …
Run Code Online (Sandbox Code Playgroud)

c++ qt cmake

4
推荐指数
1
解决办法
6147
查看次数

Ubuntu CMake添加到CMAKE_MODULE_PATH的路径

我的操作系统是Ubuntu.我想在我的项目中从QT4更改为QT5.虽然本机包在Ubuntu中是4.x版本.

我从QT主页下载了Linux安装程序并安装了QT5.4 /opt/Qt/5.4/

找不到此路径

find_package (Qt5 REQUIRED)
Run Code Online (Sandbox Code Playgroud)

我尝试添加

set(CMAKE_MODULE_PATH "/opt/QT/5.4;${CMAKE_MODULE_PATH}")
Run Code Online (Sandbox Code Playgroud)

对我而言CMAKELIST.txt,这没有用.

我在哪里链接,或者我使用错误的语法?

在通过调用提示之后的一些编辑:

 cmake -DCMAKE_PREFIX_PATH=/opt/QT/5.4/gcc_64/ ../src/
Run Code Online (Sandbox Code Playgroud)

我也删除了CMAKE_MODULE_PATH变量.我仍然得到同样的错误:

 CMake Error at CMakeLists.txt:3 (find_package):
 Found package configuration file:
 /usr/lib/x86_64-linux-gnu/cmake/Qt5/Qt5Config.cmake
 but it set Qt5_FOUND to FALSE so package "Qt5" is considered to be NOT
 FOUND.  Reason given by package:

 The Qt5 package requires at least one component
Run Code Online (Sandbox Code Playgroud)

我不知道为什么会在阅读https://blogs.kde.org/2008/12/12/how-get-cmake-find-what-you-want-it后发生这种情况 .在那里声明,将在默认搜索目录之前搜索路径.我现在使用的路径似乎是:

/opt/QT/5.4/gcc_64/
Run Code Online (Sandbox Code Playgroud)

添加子文件夹gcc_64必须正确,因为此子文件夹具有"lib","include"等子文件夹.

我记得我也打过电话

sudo apt-get install QT5-default 
Run Code Online (Sandbox Code Playgroud)

前一段时间.这没有用,我需要QT的安装程序.虽然我再次删除了qt5-default以防止cmake找到错误的包配置文件,但仍会出现相同的错误.

请参阅下面的讨论,转到此处: Cmake和QT5 - Include只接受一个参数

c++ qt cmake

3
推荐指数
1
解决办法
2万
查看次数

使用不同文件夹上的文件来刷新AUTOMOC

我有一个简单的CMake项目:

proj (project folder)
??? a.h
??? a.cpp
??? CMakeLists.txt
Run Code Online (Sandbox Code Playgroud)

的CMakeLists.txt:

cmake_minimum_required(VERSION 3.2)

set(CMAKE_VERBOSE_MAKEFILE ON)

set(CMAKE_AUTOMOC ON)

project(proj)

set( proj_SOURCE
    a.cpp
)

find_package(Qt5Core)

set( proj_LIBRARIES
    Qt5::Core
)

add_library(proj SHARED ${proj_SOURCE})
target_link_libraries(proj ${proj_LIBRARIES})
Run Code Online (Sandbox Code Playgroud)

啊:

#pragma once

#include <QObject>

class A : public QObject
{
    Q_OBJECT
public:
    explicit A(QObject *parent = 0);
};
Run Code Online (Sandbox Code Playgroud)

a.cpp:

#include "a.h"

A::A(QObject *parent) : QObject(parent)
{
}
Run Code Online (Sandbox Code Playgroud)

一切都很好.接下来,我尝试将头文件和源文件移动到不同的文件夹中,如下所示:

proj (project folder)
??? include
?   ??? a.h
??? src
?   ??? a.cpp
??? CMakeLists.txt
Run Code Online (Sandbox Code Playgroud)

并尝试了以下调用的不同配置:

include_directories("include")
include_directories("src")

set( …
Run Code Online (Sandbox Code Playgroud)

c++ qt cmake moc

3
推荐指数
1
解决办法
1767
查看次数

标签 统计

cmake ×5

c++ ×4

qt ×4

moc ×1

qt5 ×1

qtquickcontrols2 ×1