【发布时间】:2016-04-13 05:37:29
【问题描述】:
我目前正在 MacOS 上使用 QT-Creator,目前我有点卡在 2 点上。我有一个主项目和两个子项目。到目前为止,这一切正常。
主项目的.pro文件如下所示:
//...
TEMPLATE = subdirs
SUBDIRS += Proj1
SUBDIRS += Proj2
Proj1.pro 文件如下所示:
TARGET = Proj1
CONFIG += console
CONFIG -= app_bundle
TEMPLATE = app
SOURCES += someclass1.cpp
HEADERS += someclass1.h
Proj2.pro 看起来很相似,除了 SOURCES 和 HEADERS 部分:
//...
SOURCES += someclass2.cpp main.cpp
HEADERS += someclass2.h
现在进入有趣的部分:
我的someclass1.cpp 包含一个全局变量,如下所示:
#include "someclass1.h"
int g_something = 18;
SomeClass1::SomeClass1() {}
我的someclass2.cpp 尝试通过关键字extern 访问该全局变量:
#include "someclass2.h"
#include "../Proj1/someclass1.h"
#include <stdio.h>
extern int g_something;
SomeClass2::SomeClass2() {
printf("g_something: %d\n", g_something);
}
当我尝试编译时,我收到 2 个错误:
Undefined symbols for architecture x86_64:
"_g_something", referenced from:
SomeClass2::SomeClass2() in someclass2.o ...
和
Undefined symbols for architecture x86_64:
"_main", referenced from:
start in crt1.10.6.o
我知道第一个错误来自使用
someclass1中的g_something没有正确链接Proj1到Proj2但 我不知道如何告诉链接器我使用的是其他子项目-
我猜第二个错误是因为我没有在项目
Proj1中定义主方法,但我不知道该怎么做,所以没有预期的主方法!
【问题讨论】:
标签: c++ macos qt qmake subdirectory