QT:指定项目目录,如" build"和" src" in" .pro" flie

时间:2018-03-14 09:31:42

标签: c++ qt qt5 qt-creator qmake

我有一个像这样的项目层次结构:

file.pro

src/
    files.cpp

include/
    headers.h

build/
    files.o

bin/
    finalExecutable

.pro文件中指定的内容,以便qmake生成的Makefile从我的.cpp目录中获取src/个文件,并将可执行文件放在{{1}中目录?

对于build部分,我添加了include,除了包含任何INCLUDEPATH += include/*而我必须编写file.h而不是#include <include/file.h>。 如何将其放在#include <file.h>文件中,以便我可以包含.pro等标题。

我尝试添加#include <file.h>,但它显示错误:

SOURCES += src/*

如何指定error: No rule to make target 'sourceFiles/*', needed by 'mydialog.o'. Stop. includesrc目录?

2 个答案:

答案 0 :(得分:2)

这应该很容易。只需将其包含在.pro文件

中即可
MOC_DIR     = ./build/moc
OBJECTS_DIR = ./build/obj
RCC_DIR     = ./build/qrc
UI_DIR      = ./build/uic

和voilà,一旦执行qmake,就会创建文件夹build及其子目录。

如果您有本地包含,则不应使用#include <localheader.h> #include "localheader.h"

答案 1 :(得分:1)

将构建目录指定为源子目录的Qmake文件以及假定qmake在源文件夹中执行的文件基本上都已损坏。构建任何项目(甚至是非Qt项目!)的推荐方法是从源代码开始。即:

# suppose the sources are in myproject
mkdir myproject-build
cd myproject-build
qmake ../myproject && make      # for qmake projects
cmake ../myproject && make      # for cmake projects
../myproject/configure && make  # for autotools projects

当然,明智的做法是将所有可执行文件硬链接(或复制)到构建目录的某个公共子文件夹中。这需要更多的体操。 E.g:

EXTRA_BINFILES += $$PWD/src/myproject # target name in src.pro
DESTDIR = $$OUT_PWD/bin
QMAKE_PRE_LINK += $$QMAKE_MKDIR_CMD $$DIR
for(FILE, EXTRA_BINFILES){
  QMAKE_POST_LINK += \
    $$QMAKE_COPY $$shell_path($$FILE) $$shell_path($$DIR) $$escape_expand(\\n\\t)
}

有关详情,请参阅this question