【问题标题】:Qmake Project FileQmake 项目文件
【发布时间】:2011-06-23 22:06:53
【问题描述】:

我有一个我制作的类文件(头文件和 cpp),我想在我的 main.cpp 文件中使用它。我生成了一个 qmake 项目文件(从我的 main.cpp 的当前目录)并添加了标题和 cpp:

HEADERS += $$quote(/home/myusername/projects/src/myclass.h)
SOURCES += $$quote(/home/myusername/projects/src/myclass.cpp)
SOURCES += main.cpp

当我运行 makefile 时,它​​似乎可以工作,直到它到达我包含头文件的 main.cpp 部分,然后它说:致命错误,没有这样的文件或目录

我觉得我犯了一个非常基本的错误,但我似乎无法弄清楚。

【问题讨论】:

  • 我的路径中有空格,qt 示例建议将其作为解释空格的最佳方式。他们说使用“\”表示空格已被贬低。
  • 那里看不到任何空格。我已经看过两次了。
  • 现在只是返回关闭这个问题,但我相信我的用户名和/或我的班级有空格。我非常怀疑我会在类文件名中添加空格,但我的用户名中可能有空格(这是一个不再存在的 VM,我不记得了)

标签: c++ qt makefile


【解决方案1】:

首先,在项目文件中使用绝对路径绝对是个坏主意。

如果该类是项目的一部分,但位于另一个目录中,请在项目文件和 #include 指令中使用相对路径,并使用 #include "relative/path/myclass.h" 语法。

如果那个类不是项目的一部分,那么你应该将它编译为一个库,然后使用带有以下选项的 qmake:

qmake INCLUDEPATH+=/path/to/the/header LIBS+=-L/path/to/the/library

并将库名添加到项目文件中:

LIBS += -llibraryname

然后您可以将您的课程包含为#include <myclass.h>,注意<> 语法。

请注意,特定于工作站的内容转到命令行,但独立于工作站的库名称转到项目文件。如果您想提供一些合理的默认位置,可以使用以下技巧:

unix { # default path for the Unix systems
  isEmpty(MYLIB_PATH): MYLIB_PATH = /usr/local
}
INCLUDEPATH += $$MYLIB_PATH/include
LIBS += -L$$MYLIB_PATH/lib

然后,如果您愿意,您仍然可以从命令行覆盖路径:

qmake MYLIB_PATH=/home/myusername/mylib

【讨论】:

    【解决方案2】:

    在@Sergey Tachenov 的帮助下,我最终弄明白了。我使用“../”将其从绝对路径更改为相对路径。

    HEADERS += ../src/classfile.h
    SOURCES += ../src/classfile.cpp
    SOURCES += main.cpp
    

    我还修改了 main.cpp 包含文件,所以它是

    #include "../src/classfile.h"
    

    进行这些更改后,它可以正确编译和运行。

    谢谢!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多