gpt4 book ai didi

qt - 编译自己的 QtCreator 插件失败

转载 作者:行者123 更新时间:2023-12-04 04:35:21 25 4
gpt4 key购买 nike

我正在尝试通过关注 this 创建我自己的 QtCreator 插件指南。

所以我克隆了this repo 并检查了 v2.8.1 标记的提交(c3ed746c)。

然后我复制了我的 QtCreator 2.8.1 目录并创建了一个新的 Qt Creator Plugin 项目。

然后我在我的项目目录中创建一个名为 MyPlugin.json 的新文件。

如果我尝试编译我的插件,我会收到此错误:

e:\qtprojects\build-myplugin-desktop_qt_5_1_1_msvc2012_32bit-debug\debug../../MyPlugin/mypluginplugin.h(6) : fatal error C1083: Cannot open include file: "extensionsystem/iplugin.h": No such file or directory jom: E:\QtProjects\build-MyPlugin-Desktop_Qt_5_1_1_MSVC2012_32bit-Debug\Makefile.Debug [debug\moc_mypluginplugin.obj] Error 2 jom: E:\QtProjects\build-MyPlugin-Desktop_Qt_5_1_1_MSVC2012_32bit-Debug\Makefile [debug] Error 2 10:56:51: The process "E:\Qt\Qt5\Tools\QtCreator\bin\jom.exe" exited with code 2. Error while building/deploying project myplugin (kit: Desktop Qt 5.1.1 MSVC2012 32bit) When executing step 'Make' 10:56:51: Elapsed time: 00:01.



我该怎么做才能让它发挥作用?

这是源文件:

myplugin.pro
DEFINES += MYPLUGIN_LIBRARY

# MyPlugin files

SOURCES += mypluginplugin.cpp

HEADERS += mypluginplugin.h \
myplugin_global.h \
mypluginconstants.h

# Qt Creator linking

## set the QTC_SOURCE environment variable to override the setting here
QTCREATOR_SOURCES = $$(QTC_SOURCE)
isEmpty(QTCREATOR_SOURCES):QTCREATOR_SOURCES=E:/QtProjects/_QtCreatorPlugIns/qt-creator

## set the QTC_BUILD environment variable to override the setting here
IDE_BUILD_TREE = $$(QTC_BUILD)
isEmpty(IDE_BUILD_TREE):IDE_BUILD_TREE=E:/QtProjects/_QtCreatorPlugIns/QtCreator

## uncomment to build plugin into user config directory
## <localappdata>/plugins/<ideversion>
## where <localappdata> is e.g.
## "%LOCALAPPDATA%\QtProject\qtcreator" on Windows Vista and later
## "$XDG_DATA_HOME/data/QtProject/qtcreator" or "~/.local/share/data/QtProject/qtcreator" on Linux
## "~/Library/Application Support/QtProject/Qt Creator" on Mac
# USE_USER_DESTDIR = yes

PROVIDER = MyCompany

include($$QTCREATOR_SOURCES/src/qtcreatorplugin.pri)

myplugin_global.h
#ifndef MYPLUGIN_GLOBAL_H
#define MYPLUGIN_GLOBAL_H

#include <QtGlobal>

#if defined(MYPLUGIN_LIBRARY)
# define MYPLUGINSHARED_EXPORT Q_DECL_EXPORT
#else
# define MYPLUGINSHARED_EXPORT Q_DECL_IMPORT
#endif

#endif // MYPLUGIN_GLOBAL_H

mypluginconstants.h
#ifndef MYPLUGINCONSTANTS_H
#define MYPLUGINCONSTANTS_H

namespace MyPlugin {
namespace Constants {

const char ACTION_ID[] = "MyPlugin.Action";
const char MENU_ID[] = "MyPlugin.Menu";

} // namespace MyPlugin
} // namespace Constants

#endif // MYPLUGINCONSTANTS_H

我的插件插件.h
#ifndef MYPLUGIN_H
#define MYPLUGIN_H

#include "myplugin_global.h"

#include <extensionsystem/iplugin.h>

namespace MyPlugin {
namespace Internal {

class MyPluginPlugin : public ExtensionSystem::IPlugin
{
Q_OBJECT
Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QtCreatorPlugin" FILE "MyPlugin.json")

public:
MyPluginPlugin();
~MyPluginPlugin();

bool initialize(const QStringList &arguments, QString *errorString);
void extensionsInitialized();
ShutdownFlag aboutToShutdown();

private slots:
void triggerAction();
};

} // namespace Internal
} // namespace MyPlugin

#endif // MYPLUGIN_H

mypluginplugin.cpp
#include "mypluginplugin.h"
#include "mypluginconstants.h"

#include <coreplugin/icore.h>
#include <coreplugin/icontext.h>
#include <coreplugin/actionmanager/actionmanager.h>
#include <coreplugin/actionmanager/command.h>
#include <coreplugin/actionmanager/actioncontainer.h>
#include <coreplugin/coreconstants.h>

#include <QAction>
#include <QMessageBox>
#include <QMainWindow>
#include <QMenu>

#include <QtPlugin>

using namespace MyPlugin::Internal;

MyPluginPlugin::MyPluginPlugin()
{
// Create your members
}

MyPluginPlugin::~MyPluginPlugin()
{
// Unregister objects from the plugin manager's object pool
// Delete members
}

bool MyPluginPlugin::initialize(const QStringList &arguments, QString *errorString)
{
// Register objects in the plugin manager's object pool
// Load settings
// Add actions to menus
// Connect to other plugins' signals
// In the initialize method, a plugin can be sure that the plugins it
// depends on have initialized their members.

Q_UNUSED(arguments)
Q_UNUSED(errorString)

QAction *action = new QAction(tr("MyPlugin action"), this);
Core::Command *cmd = Core::ActionManager::registerAction(action, Constants::ACTION_ID,
Core::Context(Core::Constants::C_GLOBAL));
cmd->setDefaultKeySequence(QKeySequence(tr("Ctrl+Alt+Meta+A")));
connect(action, SIGNAL(triggered()), this, SLOT(triggerAction()));

Core::ActionContainer *menu = Core::ActionManager::createMenu(Constants::MENU_ID);
menu->menu()->setTitle(tr("MyPlugin"));
menu->addAction(cmd);
Core::ActionManager::actionContainer(Core::Constants::M_TOOLS)->addMenu(menu);

return true;
}

void MyPluginPlugin::extensionsInitialized()
{
// Retrieve objects from the plugin manager's object pool
// In the extensionsInitialized method, a plugin can be sure that all
// plugins that depend on it are completely initialized.
}

ExtensionSystem::IPlugin::ShutdownFlag MyPluginPlugin::aboutToShutdown()
{
// Save settings
// Disconnect from signals that are not needed during shutdown
// Hide UI (if you add UI that is not in the main window directly)
return SynchronousShutdown;
}

void MyPluginPlugin::triggerAction()
{
QMessageBox::information(Core::ICore::mainWindow(),
tr("Action triggered"),
tr("This is an action from MyPlugin."));
}

Q_EXPORT_PLUGIN2(MyPlugin, MyPluginPlugin)

目录
E:\QtProjects\_QtCreatorPlugIns> tree

├───qt-creator
│ ├───bin
│ ├───dist
│ ├───doc
│ ├───lib
│ ├───qbs
│ ├───scripts
│ ├───share
│ ├───srcn64interrupt
│ └───testsster
├───QtCreator
│ ├───bin
│ ├───lib0
│ └───share

最佳答案

如果你是linux用户,可以下载qtcreator-dev .但是,我不知道它在 Windows 上是如何工作的。

  • 打开终端
  • 类型:sudo apt-get install qtcreator-dev
  • 完成。
  • 关于qt - 编译自己的 QtCreator 插件失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19833283/

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