2009-04-15 20 views
1

Ich bin QGIS Quellcode anpassen, die durch cmake baut.Cmakes undefined Referenz Linking Fehler

Es hat einen Source-Tree mit vielen Unterverzeichnissen (darunter auch Unterverzeichnisse).

Der gesamte Source-Tree ist unterteilt in Module wie Core, die GIS-Core-Komponenten hat, GUI, kümmert sich um die GUI, App, die kümmert sich um die Haupt-App (mit main.cpp) und andere Module sowie ..

Das Problem ist, dass ich mit einer Anforderung stecken bin, wo ich auf ein statisches Klassenmitglied in einem anderen Modul zugreifen muss. um genau zu sein, ein Mitglied der QgisApp-Klasse im Gui-Modul.

Also normale Aufnahme der qgisapp.h in einem der GUI-Modul .cpp gibt mir undefined Verweis auf die mamber, die ich zugreifen möchte. später habe ich die .h und .cpp in der CMakeLists.txt Datei Diese Datei befindet sich im Stammverzeichnis des Gui-Moduls und hat cmake erneut ausgeführt, so dass die Makefiles die richtigen Includes enthalten. aber die Zahl wurde erhöht, wenn undefinierte Verweise eine große Rolle spielen (vielleicht weil die .h- und .cpp-Dateien zu CMakeLists hinzugefügt wurden .txt selbst enthält andere .h und .cpp, die Verweise in der eigenen CMakeLists.txt des App-Moduls enthalten.

Also wie kann ich ein Mitglied einer Klasse eines Moduls in einem anderen Modul verwenden, das mit einem anderen Satz von CMakeLists.txt in seinem jeweiligen Stammverzeichnis erstellt wird?

Diese Frage ausdrücklich nicht auf qgis bezogen, sondern kann mit jeder beliebigen Quelle Baum stoßen, die ähnlich ist, was qgis has..So sich eine Cmake Zusammenhang Frage im Grunde ..

hoffe, ich kann meine clearify Problem.

Hilfe wird geschätzt.

Danke.

Antwort

1

target_link_libraries sollte tun, was Sie suchen. Wenn dies nicht funktioniert, können Sie bitte einen Beispiel-CMake-Code veröffentlichen?