Keine Regel, um das Ziel /usr/lib/someLib.so zu erstellen

8

Der Build verwendet, um in 11.04 zu arbeiten, jetzt in 12.04 tut es nicht.

Es besteht ein Konflikt mit dem Speicherort von someLib.so . Das heißt, es wird an der falschen Stelle gesucht. /usr/lib/here/someLib.so ist der korrekte Speicherort.

Wenn ich die c-Konfiguration cmd in ccmake ausführe, hat es den Konflikt einmal bemerkt. Jetzt beklagt sich ccmake nicht mehr, aber der Fehler ist immer noch da. runtime library [someLib.so] in /usr/lib may be hidden by files in: /usr/lib/here

Die Zeilen in CMakeLists.txt, die den Buildfehler verursachen, sind:

%Vor%

Ich sehe das Problem in der Datei build.make . Was von ccmake generiert wird. Ich kann nicht herausfinden, wo ccmake die Idee bekommt, dass someLib.so bei /usr/lib/ ist, anstatt @ /usr/lib/here/ . Ich denke, es wäre irgendwo eine SET() Aussage. Ich finde es nicht.

1) Wie lautet die Konfigurationsdatei (ccmake 'c' cmd)? Wo wäre es (gleich dir?)? Ich denke, wenn ich es verlasse, werde ich den Fehler wieder sehen können. (Das Ändern von CMakeFile.txt scheint es nicht zu tun.)
2) Wie kann ich herausfinden, wo der Speicherort von someLib.so eingestellt ist? (Was suche ich?)

Ich hasse CCMAKE. Danke

    
Doug 15.01.2013, 21:32
quelle

1 Antwort

1

Ich würde sagen, dass dies ein Problem mit einem der find_library-Aufrufe ist. Wenn ich mich richtig erinnere, geschah dies, wenn Ihre Umgebung auf zwei verschiedene Orte zeigte, die beide eine Bibliotheksdatei mit dem gleichen Namen enthielten.

Sie können dies verhindern, indem Sie entweder Ihre Umgebung so ändern, dass sie nicht auf beide Standorte zeigt, oder einen von NO_ * _ PATH mit find_library verwenden, um zu verhindern, dass cmake beide Orte findet (z. B. könnten Sie Ihren eigenen Pfad definieren) Diese find_library und verwenden Sie NO_DEFAULT_PATH, um cmake daran zu hindern, Umgebungspfade zu verwenden - siehe Dokumentation: Ссылка )

find_library (someLib_location NAMEN someLib PATHS / usr / lib / here / NO_DEFAULT_PATH)

In Bezug auf 1) Ich denke, dass sie CMakeCache-Dateien genannt werden, aber der sicherste Weg ist, einfach die gesamte Build-Struktur zu löschen (kein Problem, wenn Sie aus der Quelle bauen)

Was 2 betrifft, würde ich durch CMakeList.txt-Dateien nach Bibliotheksnamen suchen (ohne .so-Suffix und lib-Präfix, da diese wahrscheinlich von CMAKE_FIND_LIBRARY_PREFIXES- und CMAKE_FIND_LIBRARY_SUFFIXES-Variablen hinzugefügt werden)

    
Domen Vrankar 16.01.2013 09:40
quelle

Tags und Links