BlueGo Beta 0.0.1: Boost einfach mit Visual C++ 2010 x64 bauen
-
ich habe vor kurzen auf meiner Homepage http://vertexwahn.de/index.html ein Tool veröffentlicht (BlueGo Beta 0.0.1), das automatisch die Boost Libs - downloaded und sie mithilfe von Visual Studio 2010 x64 übersetzt.
Wer also die neue Boost 1.50.0 Libs benötigt und Visual Studio 2010 besitzt kann das Tool gerne mal testen.
In ferner die Zukunft soll auch noch QT unterstützt werden
-
Es gibt ein Update - jetzt wird auch Qt und Visual Studio 2012 unterstützt - folgende Konfigurationen sind jetzt möglich:
- Boost 1.51.0 x64 Visual Studio 2010
- Boost 1.51.0 x64 Visual Studio 2012
- Qt 4.8.3 x64 Visual Studio 2010
- Qt 4.8.3 x64 Visual Studio 2012
-
Nun gibt es auch Support für x86:
Boost 1.51.0 x64 Visual Studio 2010
Boost 1.51.0 x64 Visual Studio 2012
Boost 1.52.0 x64 Visual Studio 2010
Boost 1.52.0 x64 Visual Studio 2012
Qt 4.8.3 x64 Visual Studio 2010
Qt 4.8.3 x64 Visual Studio 2012
Qt 4.8.4 x64 Visual Studio 2010
Qt 4.8.4 x64 Visual Studio 2012
Qt 5.0 x64 Visual Studio 2010
Qt 5.0 x64 Visual Studio 2012
Boost 1.51.0 x86 Visual Studio 2010
Boost 1.51.0 x86 Visual Studio 2012
Boost 1.52.0 x86 Visual Studio 2010
Boost 1.52.0 x86 Visual Studio 2012
Qt 4.8.3 x86 Visual Studio 2010
Qt 4.8.3 x86 Visual Studio 2012
Qt 4.8.4 x86 Visual Studio 2010
Qt 4.8.4 x86 Visual Studio 2012
Qt 5.0 x86 Visual Studio 2010
Qt 5.0 x86 Visual Studio 2012
-
Es gibt ein neues BlueGo! 0.0.9
Supported platforms: x86, x64
Supported compilers: Microsoft Visual Studio 2010, Microsoft Visual Studio 2012
Supported Qt versions: 4.8.3, 4.8.4, 5.0.0, 5.0.1
Supported boost versions: 1.51.0, 1.52.0, 1.53.0
Supported OpenSceneGraph versions: 3.0.1Ich suche Mitstreiter, die Lust haben BlueGo mit mir zusammen weiterzuentwickeln - insbesondere wären folgende Bibliotheken interessant:
- OpenCASCADE (http://www.opencascade.org/)
- OpenCV (http://opencv.org/)
- FreeGlut (http://freeglut.sourceforge.net/)
- GLFW (http://www.glfw.org/)
-
Werden die Libs 1:1 so kompiliert wie die original-Distro es macht/vorsieht, oder bietet BlueGo! irgend ein einheitliches System an? Also z.B. ein Staging/Install Verzeichnis wo alle fertig compilierten .lib/.dll plus die öffentlichen Headers der entsprechenden Library reinkopiert werden?
Eines was mich bei Windows nämlich immer stört, ist dass man zig Include- und Lib-Pfade setzen muss. Und, wenn man DLLs verwendet, natürlich noch den PATH erweitern.
Die mMn. bessere Alternative wäre ein "staging" Verzeichnis, wo alles reinkopiert wird was erfolgreich fertig übersetzt wurde. Inklusive Headers, damit Fehler vermieden werden wenn man z.B. die Sourcen upgedated hat, aber noch nicht neu kompiliert.
Und... kannst du kurz zusammenfassen was alles nötig ist um neue Libs zu integrieren?
-
zum Stagging Verzeichnis:
Man kann sicherlich noch einen Button ins Menü einbauen, der alle fertiggebauten Bibliotheken in ein Staging/Install Verzeichnis kopiert - analog kann man mit den Headerdateien verfahren - d. h. diesen Feature Request könnte ich berücksichtigen:
https://bitbucket.org/Vertexwahn/bluego/issue/14/provide-a-menu-buttion-which-copies-allEines was mich bei Windows nämlich immer stört, ist dass man zig Include- und Lib-Pfade setzen muss.
Ich verwende dazu CMake. BlueGo ist so gebaut, dass es die Bibliotheken genau so baut wie es die default CMake FindPackage Kommandos erwarten - das dürfte übereinstimmen mit den orginal-Distros
Die PATH Variable ändere ich nie - ich koopiere die entsprechenden DLLs einfach. Dazu erstelle ich eine Projektmappe, die das für mich übernimmt.
# BoostBinaries if (MSVC11) add_custom_target(BoostCopyBinaries COMMAND ${CMAKE_COMMAND} -E copy ${Boost_INCLUDE_DIR}/stage/lib/boost_filesystem-vc110-mt-gd-1_53.dll ${CMAKE_BINARY_DIR}/Debug COMMAND ${CMAKE_COMMAND} -E copy ${Boost_INCLUDE_DIR}/stage/lib/boost_system-vc110-mt-gd-1_53.dll ${CMAKE_BINARY_DIR}/Debug COMMAND ${CMAKE_COMMAND} -E copy ${Boost_INCLUDE_DIR}/stage/lib/boost_signals-vc110-mt-gd-1_53.dll ${CMAKE_BINARY_DIR}/Debug COMMAND ${CMAKE_COMMAND} -E copy ${Boost_INCLUDE_DIR}/stage/lib/boost_filesystem-vc110-mt-1_53.dll ${CMAKE_BINARY_DIR}/Release COMMAND ${CMAKE_COMMAND} -E copy ${Boost_INCLUDE_DIR}/stage/lib/boost_system-vc110-mt-1_53.dll ${CMAKE_BINARY_DIR}/Release COMMAND ${CMAKE_COMMAND} -E copy ${Boost_INCLUDE_DIR}/stage/lib/boost_signals-vc110-mt-1_53.dll ${CMAKE_BINARY_DIR}/Release COMMENT "Copying boost_filesystem-vc110-mt-gd-1_53.dll from '${Boost_INCLUDE_DIR}/lib/stage' to '${CMAKE_BINARY_DIR}/Debug'" VERBATIM COMMENT "Copying boost_system-vc110-mt-gd-1_53.dll from '${Boost_INCLUDE_DIR}/stage/lib' to '${CMAKE_BINARY_DIR}/Debug'" VERBATIM COMMENT "Copying boost_signals-vc110-mt-gd-1_53.dll from '${Boost_INCLUDE_DIR}/stage/lib' to '${CMAKE_BINARY_DIR}/Debug'" VERBATIM COMMENT "Copying boost_system-vc110-mt-gd-1_53.dll from '${Boost_INCLUDE_DIR}/stage/lib' to '${CMAKE_BINARY_DIR}/Debug'" VERBATIM COMMENT "Copying boost_signals-vc110-mt-1_53.dll from '${Boost_INCLUDE_DIR}/stage/lib' to '${CMAKE_BINARY_DIR}/Debug'" VERBATIM ) elseif (MSVC10) add_custom_target(BoostCopyBinaries COMMAND ${CMAKE_COMMAND} -E copy ${Boost_INCLUDE_DIR}/stage/lib/boost_filesystem-vc100-mt-gd-1_53.dll ${CMAKE_BINARY_DIR}/Debug COMMAND ${CMAKE_COMMAND} -E copy ${Boost_INCLUDE_DIR}/stage/lib/boost_system-vc100-mt-gd-1_53.dll ${CMAKE_BINARY_DIR}/Debug COMMAND ${CMAKE_COMMAND} -E copy ${Boost_INCLUDE_DIR}/stage/lib/boost_signals-vc100-mt-gd-1_53.dll ${CMAKE_BINARY_DIR}/Debug COMMAND ${CMAKE_COMMAND} -E copy ${Boost_INCLUDE_DIR}/stage/lib/boost_filesystem-vc100-mt-1_53.dll ${CMAKE_BINARY_DIR}/Release COMMAND ${CMAKE_COMMAND} -E copy ${Boost_INCLUDE_DIR}/stage/lib/boost_system-vc100-mt-1_53.dll ${CMAKE_BINARY_DIR}/Release COMMAND ${CMAKE_COMMAND} -E copy ${Boost_INCLUDE_DIR}/stage/lib/boost_signals-vc100-mt-1_53.dll ${CMAKE_BINARY_DIR}/Release COMMENT "Copying boost_filesystem-vc100-mt-gd-1_53.dll from '${Boost_INCLUDE_DIR}/lib/stage' to '${CMAKE_BINARY_DIR}/Debug'" VERBATIM COMMENT "Copying boost_system-vc100-mt-gd-1_53.dll from '${Boost_INCLUDE_DIR}/stage/lib' to '${CMAKE_BINARY_DIR}/Debug'" VERBATIM COMMENT "Copying boost_signals-vc100-mt-gd-1_53.dll from '${Boost_INCLUDE_DIR}/stage/lib' to '${CMAKE_BINARY_DIR}/Debug'" VERBATIM COMMENT "Copying boost_system-vc100-mt-gd-1_53.dll from '${Boost_INCLUDE_DIR}/stage/lib' to '${CMAKE_BINARY_DIR}/Debug'" VERBATIM COMMENT "Copying boost_signals-vc100-mt-1_53.dll from '${Boost_INCLUDE_DIR}/stage/lib' to '${CMAKE_BINARY_DIR}/Debug'" VERBATIM ) endif (MSVC11)
oder entsprechend für Qt:
https://bitbucket.org/Vertexwahn/cmakedemos/src/cfab58650adc5d4b3bb7bcb32d57ab206c6c4c39/Qt5HelloWorld/CMakeLists.txt?at=defaultMehr zu CMake: http://www.youtube.com/watch?v=fAtJNzDZdH8&list=UUlHt_TkRUOsmlnSgpYgmOmg&index=9
Langfristig wäre es sicherlich auch toll wenn man alle Bibliotheken unterstützen kann die CMake nativ unterstützt.
Um eine neue Lib zu integrieren muss man einfach nur von der Klasse BuildProcess ableiten und entsprechend alle Methoden implementieren. Beispielsweise kann man sich die Vorgehensweise abschauen von der Klasse QtBuildProcess oder BoostBuildProcess
Eigentlich könnte man dafür auch einen Codegenerator schreiben - weil alles doch immer sehr ähnlich aussieht - for OpenCV hab ich das mal so schnell mit Textersetzung erzeugt:
https://bitbucket.org/Vertexwahn/bluego/src/a0c42b40b9957dd13e8ca906df9e5f0551a92cce/BlueGo/OpenCV.cs?at=defaultDas funktioniert zwar noch nicht, weil der echte Buildprozess noch fehlt aber von der Struktur her soll es so aussehen. Außerdem muss man noch Anpassungen im GUI machen und am besten auch noch eine Unit Test dazu schreiben. z. B. bie Boost weiß man dass es am Ende eine boostFilesystem.dll geben muss und so etwas kann man im Unit Test abfangen.
-
Arbeite gerade an einem neuen Feature: http://www.youtube.com/watch?v=kAvkTGJq7hM
- Eine Brute Force Suche um überflüssige Inlcudes zu finden – funktioiert natürlich nur für triviale Fälle… aber manchmal reicht das schon
-
Gerade habe ich BlueGo 0.1.9 (http://vertexwahn.de/bluego.html) veröffentlicht
Supported platforms: x86, x64
Supported compilers: Microsoft Visual Studio 2010, Microsoft Visual Studio 2012 and Microsoft Visual Studio 2013
Supported boost versions: 1.51.0, 1.52.0, 1.53.0, 1.54.0, 1.55.0, From Source (SVN)
Supported Qt versions: 4.8.3, 4.8.4, 5.0.0, 5.0.1, 5.1.0, 5.1.1, 5.2.1, 5.3.0, 5.3.1
Supported OpenSceneGraph versions: 3.0.1
Supported Eigen versions: 3.2.0, 3.2.1
Supported libLAS versions: 1.7.0
Supported PCL versions: 1.7.1
-
Die aktuelle Seite des Porjektes ist hier zu finden:
https://bitbucket.org/Vertexwahn/bluego
Inzwischen wird auch Boost 1.63.0 unterstützt