【问题标题】:Qt creator has cmakelists load into projectQt 创建者已将 cmakelists 加载到项目中
【发布时间】:2016-04-30 08:20:26
【问题描述】:

The screen-spot of the demo project I build in Qt creator 我有一个包含多个 .cpp、.h 和 CMakeLists.txt 文件的 Source 目录。我想将此导演作为 Qt creator 中的项目导入。我的源目录中现在有 .pro 文件。我尝试了以下两种方法,但是我仍然无法将此导演加载到 Qt creator 中。

  1. Qt 创建器中的第一个方法:文件-> 导入项目-> 导入现有项目,然后它要求我提供“项目名称和位置”。一旦我给出了现有源目录的位置,Qt 就为我构建了一个新项目,但是,我在新项目中看不到我的 CMakeLists.txt 文件。如何使用我自己的 CMakeLists.txt 将我现有的源文件作为项目加载到 Qt 中??

  2. Qt creator 中的第二种方法:File->Non-Qt Project->Plain C++ Application,然后点击选择。通过这种方法,可以新建一个目录下有main.cpp和CMakeLists.txt的工程,如图。但是,一旦我在项目名称“无标题”上单击鼠标右键,似乎“添加新”、“添加现有文件”、“添加现有目录”、“新建子项目”和“添加库”不能被使用,因此我可以将新的 .cpp 文件添加到这个项目中???有没有人可以帮我解决这个问题??谢谢。

【问题讨论】:

    标签: c++ ubuntu-14.04 qt-creator


    【解决方案1】:

    我使用的是 Qt Creator 3.6.1,最新版本比以前的版本更好地处理基于 CMake 的项目。也许你应该试一试? 这是最新测试版的链接; http://download.qt.io/snapshots/qtcreator/。当然它还不是发布的产品,但我发现它非常稳定。不过,您的里程可能会有所不同。

    关于问题 2,正如您所说,“添加新”、“添加现有文件”、“添加现有目录”、“新子项目”和“添加库”被禁用,因为您必须通过 cmake 管理项目。您可以编辑 CmakeLists.txt 并通过“build”->“Run CMake”再次重新运行 cmake 或单击 Reconfigure project 列上的“Project”和“Run CMake”按钮。

    如果您需要在文件夹中创建新文件,则可以右键单击子文件夹名称并单击“在此处打开终端”并添加/复制所需的文件或为文件管理器选择“显示包含文件夹” .

    编辑: 将另一个库添加到您的项目 .pro 文件中,这是一个示例;

    INCLUDEPATH += /usr/local/include/boost
    LIBPATH     += /usr/local/lib/boost
    LIBS        += -lboost_system
    

    注意它是-l,而不是-L

    基于以上,你的.pro应该是这样的;

    TEMPLATE = app
    QT += qml quick widgets
    CONFIG += c++11
    SOURCES += main.cpp
    RESOURCES += qml.qrc
    INCLUDEPATH += /usr/local/include/
    LIBPATH += /usr/local/lib/
    LIBS += -lopencv_core -lopencv_imgproc -lopencv_highgui
    

    (取决于您需要哪些 opencv 库,例如 -lopencv_core -lopencv_imgproc -lopencv_highgui -lopencv_ml 或其他)。如果您需要更多,则必须提供这些库的名称。

    ================================================ ==============

    更新: 从您的代码中,这是我测试的(成功编译并执行); 代码:

    #include<opencv2/core/core.hpp>
    #include<opencv2/highgui/highgui.hpp>
    #include<opencv2/imgproc/imgproc.hpp>
    int main()
    {
        cv::Mat image = cv::imread("diffuse.png"); 
        cv::namedWindow("My Image");
        cv::imshow("My image",image);
        cv::waitKey(5000);
        return 1;
    }
    

    .pro

    TEMPLATE = app
    QT += qml quick widgets
    CONFIG += c++11
    SOURCES += main.cpp
    #RESOURCES += qml.qrc
    INCLUDEPATH += /usr/local/include/
    LIBPATH += /usr/local/lib/
    LIBS += -lopencv_core -lopencv_imgproc -lopencv_highgui
    

    请注意,我注释掉了 qml.qrc,因为我没有它。所以我的建议是让你注释掉qml.qrc,编译并运行代码。如果一切正常,这意味着错误的来源可能在qml.qrc 的某个位置,就图像文件而言。

    ================================================ ==============

    编辑: 确保图像在文件夹中是可执行文件,而不是源代码文件

    HTH

    【讨论】:

    • 谢谢,问题的答案有效。问题是,我安装了我认为是最新版本的 Qt creator 5.5.1,你提到的 Qt creator 有什么区别?如果我用 .pro 文件构建一个新项目,我可以将 .pro 文件更改为 CMakeLists.txt 文件吗? Qt 中的 CMakeLists.txt 和 .pro 有什么区别??我发现两个文件中的内容看起来一样。
    • 您的 Qt Creator 与 Qt 5.5.1 捆绑在一起,这意味着您使用的是 Qt Creator 的最新稳定版本,该版本比我上面提到的版本旧。您可以单击“帮助”并转到“关于 Qt 创建者”以了解您安装的确切版本。至于第二个问题,没有自动转换器可以为您的项目将 .pro 更改为 CMakeLists.txt。您将不得不手动进行转换。然而,话虽如此,一旦您准备好基本模板,进行转换并不难,因为您可以将相同的模板用于各种项目,只需进行微小的更改。 HTH
    • 检查我更新的答案。让我知道它是否有效。
    • 我在 Qt 中使用 opencv3.0.0。 .pro 文件有以下内容: TEMPLATE = app, QT += qml quick widgets, CONFIG += c++11, SOURCES += main.cpp, RESOURCES += qml.qrc, INCLUDEPATH += /usr/local/ include/, LIBS += -L/usr/local/lib/,#include, main.cpp中的内容是#include, #include,int main(), {cv::Mat image = cv::imread("My.JPG"); cv::namedWindow("My Image");cv::imshow("My image",image);cv::waitKey(5000);return 1;}。错误是对 `cv::imread(cv::String const&, int) 的未定义引用,你能帮帮我吗?谢谢。
    • 那么一切都好吗?如果您创建了正确的 .qrc 文件,您应该能够使用提供的 .pro 文件编译代码。但是,从您的代码中,您实际上并没有使用 .qrc 文件,因此如果您注释掉 RESOURCES += qml.qrc 文件,您应该能够毫无问题地编译您的代码。如果您的问题确实已经解决,您介意accept 关闭此线程的答案吗?谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-01
    • 2012-02-17
    相关资源
    最近更新 更多