Hallo liebe Entwickler,
aus dem Bedürfnis heraus mich nähr mit C++ zu beschäftigen, hab ich angefangen einige kleinere Projekte umzusetzen. Bei einem dieser Projekte stehe ich vor dem Problem, nicht sonderlich viel von Makefiles zu verstehen und eine für mich obskure Fehlermeldung zu erhalten. Die letzten Stunden try-and-error und durchsuchen diverser Makefile-Howtos half leider nicht weiter und so hoffe ich jemand hier im Forum könnte mir eine Anregung geben.
Zum Sachverhalt (die Quellen wurden aufs wesentliche reduziert);
main.cpp
config.h#include "config.h"
#include <string>
int main(int argc, char **argv){
testcase::Config::WorkPath = "/home/dipesh/testcase/";
return 0;
}
Makefile#include <string>
namespace testcase {
class Config {
public:
static std::string WorkPath;
};
//std::string Config::WorkPath = "/home/dipesh/anothertestcase/";
}
Beim Versuch das Ganze mittels make zu kompilieren erhalte ich eine Fehlermeldung der ArtCC = g++ -g -Wall
BIN = mytestcase
CFLAGS =
LDFLAGS =
all: main.o
<tab>$(CC) main.o -o $(BIN) $(LDFLAGS)
main.o: main.cpp config.h Makefile
In den qmake pro-Dateien gibt es die nette Variante SOURCES und HEADERS zu definieren und gut ist. Nur wie wird das bei Makefiles definiert? Ein einfaches #include "config.h" in der main.cpp scheint wohl nicht ausreichend zu sein. Zumal die config.h später ebenfalls in anderen cpp-Dateien zum Einsatz kommen soll und die definierten statischen Variablen auf diesem Wege allen Klassen zur Verfügung stehen sollen.In function `main':
: undefined reference to `testcase::Config::WorkPath'
Danke im voraus für jeden Hinweis bzw. jede Anregung.
Lesezeichen