В настоящее время я работаю с QT-Creator на MacOS, и я немного застрял в 2 точках на данный момент. У меня есть основной проект и два подпроекта. Пока это работает нормально.Qt не распознает другие подпроекты
Файл .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
выглядит аналогично, за исключением Источниками и 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);
}
Когда я t участвовав скомпилировать я получаю 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
Я знаю, что первая ошибка приходит от использования
g_something
изsomeclass1
без надлежащей увязкиProj1
сProj2
но я не Не знаю, как сообщить компоновщику, что я использую этот другой подпроектЯ предполагаю, что вторая ошибка существует, потому что у меня нет основного метода, определенного в проекте
Proj1
, но я не знаю, что делать, поэтому не ожидается никакого основного метода!
вы можете дать мне немного больше информации? – ParkerHalo
Спасибо! Это действительно помогло запустить мой проект! – ParkerHalo