3

我有一个简单的 QT subdir 项目,其结构为

TestProject/
    TestProject.pro
    Subdir1/
            Subdir1.pro
        sources/
            main.cpp
    Subdir2/
        Subdir2.pro
        headers/
            mainwindow.h
        sources/
            mainwindow.cpp

这是我的 .pro 文件 TestProject.pro

TEMPLATE = subdirs
SUBDIRS += \
    Subdir1 \
    Subdir2

Subdir1.pro

SOURCES += \
main.cpp

Subdir2.pro

QT += sql

SOURCES += \
    mainwindow.cpp \
HEADERS += \
    mainwindow.h \

当我尝试运行应用程序时,出现以下错误:

(.text+0x18):-1: error: undefined reference to `main'

我在 Ubuntu 12.04 上使用 Qt Creator IDE。我花了很多时间试图弄清楚这一点,为了让 Qt 能够构建项目,我必须在 .pro 文件中放入什么?

提前致谢

4

2 回答 2

4

看起来您正在尝试做的是将所有源文件构建到一个可执行文件中。这不是 subdirs 模板的用途,它用于创建一个构建多个不同目标的 Makefile(例如两个不同的可执行文件,或一个可执行文件和一个库)。

您可能想要的是要么只有一个 .pro 文件,例如

SOURCES = Subdir1/mainwindow.cpp Subdir1/main.cpp

或者您可以将 subdir pro 文件制作成(按照惯例) .pri 文件。然后在顶层,您只需执行以下操作:

include(Subdir1/Subdir1.pri)
include(Subdir2/Subdir2.pri)
于 2012-08-29T12:38:32.220 回答
1

尝试将您的Subdir.pro文件显式添加到您的TestProject.pro文件中:

OTHER_FILES += \
    Subdir1/Subdir1.pro\
    Subdir2/Subdir2.pro\

所以 Qt 知道有子项目。

于 2012-08-29T11:59:29.343 回答