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.1

    Ich 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-all

    Eines 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=default

    Mehr 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=default

    Das 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


Log in to reply