CMake findet keine statischen Boost-Bibliotheken mehr

8

Ich arbeite an einem großen C ++ Projekt, das auf Boost basiert. Das Projekt basiert auf einer Vielzahl von Plattformen mit CMake. Auf meinem Windows-Rechner verwende ich CMake 2.8.9, Visual Studio 2010 und Boost 1.50.0 (aus Quellen).

Ich verwende CMake und Boost seit Jahren ohne Probleme, mit Boost-Versionen so alt wie 1,33. Jetzt findet CMake die Boost-Bibliotheken nicht mehr . Das einzige, was sich auf meinem Rechner geändert hat, ist, dass ich vor kurzem Visual Studio 2012 installiert habe, aber ich glaube nicht, dass dies etwas mit dem Problem zu tun hat (andererseits, soweit ich mich erinnere, ist dies das nur was sich geändert hat).

Hier ist die Befehlszeile, die ich benutze, um CMake aufzurufen:

%Vor%

Früher funktionierte das einwandfrei, aber es gibt jetzt folgendes aus:

%Vor%

Offenbar hat meine Boost-Installation gefunden, da sie den korrekten Pfad und die Versionsnummer anzeigt.

Hier ist der Inhalt von C:\franz\dev\boost\stage\lib :

%Vor%

Wie wir sehen können, wurde Boost als statische Bibliotheken mit Visual Studio 2010 (vc100) unter Verwendung der Multithread-Laufzeit erstellt.

Hier ist die Ausgabe von CMake, wenn ich -DBoost_DEBUG=1 :

spezifiziere %Vor%

Hier ist der Abschnitt in der CMakeLists.txt-Datei auf oberster Ebene, die sich mit Boost beschäftigt: Ссылка

Ich habe auch versucht, BOOST_LIBRARYDIR anstelle von BOOST_ROOT anzugeben, ohne Erfolg.

Auch dies funktioniert seit Jahren einwandfrei auf vielen Varianten von Windows, Linux und Mac OS X. Ich suche nach dem Grund, warum es plötzlich nicht mehr funktioniert.

    
François Beaune 18.08.2012, 17:32
quelle

1 Antwort

15

In Ihrer Debug-Ausgabe sieht es so aus, als wäre Boost_USE_STATIC_LIBS nicht gesetzt, aber Sie suchen nach den statischen Boost-Bibliotheken.

Versuchen Sie, CMake erneut auszuführen, aber mit -DBoost_USE_STATIC_LIBS=ON zum Befehl hinzugefügt.

Tatsächlich fügt Ihre CMakeLists.txt diese in eine andere Variable USE_STATIC_BOOST ein. . Die Einstellung auf ON sollte den gleichen Effekt haben.

    
Fraser 18.08.2012, 18:15
quelle

Tags und Links