Hello,
I need to install 3DTK on my Windows PC which I need for Unity and I need Unity for my main study Games Engineering. So first I was trying to install it on Windows with the bat Files. The MinGW File didn't work either because cmd does not find the pacman program, which is called several times. The Build.cmd do work, but only if in the whole src and out Directory has no white space in it. But then it fails to download qtbase-everywhere-src-5.11.2.tar.xz becuase QT has removed it from their servers. Only QT 9 and QT 12 are the next available versions. So the build crashes.
So next, I read about WSL. So I googled a bit and find a Ubuntu command prompt. After running and I installing many package, that all seems to be important somehow, I got stuck at downloading Header files for my Processor, so CMake didn't work there either. Then I've installed Homebrew and tried with it. But it now stucks for 3h on Installing libzip, so it also seems to be crashed.
The day before I tried with CMake to build it. This didn't work because CMake didn't find Boost Librarys/Installation. I've tried multiple compilers, but every time the same error. So I downloaded Boost, which was also not in build version. When trying to build Boost, it couldn't find several Header files e.g. ctype.h, which the internet also seem to not know how to change this.
By the way, until that, I was already searching something around 2-3h.
The last thing I could do is installing a virtual machine on my PC and try to build the program in there and then trying to translate it back to my Windows PC, so I can use it normally or, if this doesn't work, install it on the virtual machine and use it there.
Here is my error stacktrace from build.cmd:
Starting package 4/178: qt5-base:x64-windows
Building package qt5-base[core]:x64-windows...
CMake Warning at ports/qt5-base/portfile.cmake:5 (message):
Qt5's buildsystem uses very long paths and may fail on your system.
We recommend moving vcpkg to a short path such as 'C:\src\vcpkg' or using
the subst command.
Call Stack (most recent call first):
scripts/ports.cmake:71 (include)
Error: Building package qt5-base:x64-windows failed with: BUILD_FAILED
Please ensure you're using the latest portfiles with .\vcpkg update, then
submit an issue at https://github.com/Microsoft/vcpkg/issues including:
Package: qt5-base:x64-windows
Vcpkg version: 2018.10.20-nohash
Additionally, attach any relevant sections from the log files above.
vcpkg install failed
Yours
Joel Kühle
Last edit: Joel Kühle 2020-04-22
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
The qt problem is known and my colleague Michael Bleier is currently working on a fix. But for the assignment you are working on, you actually don't need qt at all, so you can just add -DWITH_QT=OFF to the cmake configuration.
We never tried WSL or homebrew, so we cannot assist with those.
As you already figured out, installing the dependencies like boost manually is very much prone to error. That's why we have these scripts because simple typos can easily screw up the whole build process. Windows is a royal pain -- you say you spent 2-3 hours on it and I believe you. Myself I spent weeks on making all of this work.
Andreas commented on the downsides of virtual machines but in my experience, with kvm and support for direct rendering (if your graphics card and emulator support this) it is possible to get close to native speed even within a virtual machine.
To move this forward: in the discussion forum, a colleague of yours already seems to have found a way to build everything on windows and will publish their changes soon as well. Maybe those will work for you too? Other than that, my colleague Michael Bleier said that he is currently rebuilding everything on Windows 10 and will commit his changes soon as well.
So I expect this problem to be fixed soon. If not, please do not hesitate to write us again.
Thanks!
cheers, josch
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hey,
thanks for your help. After I added to do not try to download QT, it works until the script wants to download icu, which also failed. So I added that as well. Then after a few more attempts, the directory "C:\Users\ME\Win64" seems to get deleted or do never exist on my PC.
Anyway, I've got the compiled binaries now from a classmate and figured out, that the show.exe is not starting via batch file. I've tried to start it with "start "" "%~dp0show.exe" -s 0 -e 0 %~dp0..\dat\", the program opens and closes directly with no output. Is the command wrong or is the program only startable via normal Shell?
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hi, Joel, and JoSch,
thanks for your mention, because I am suffering from the same issue which is related to icu. When I execute the batch script build.cmd on the prompt on Windows 10 after downloading slam6d-code-r2223-trunk, the error occurs and the building process stops while acquiring MSYS packages.
I don't understand why it happens so that I keep trying to fix it. My questions are (1) How can I fix it, Josch? And, (2) how did you fix the this problem as Joel said at https://sourceforge.net/p/slam6d/discussion/939032/thread/6170824484/#f92e.
, and (3) Could you explain "Then after a few more attempts" concretely, Joel?
Last edit: Junhee Lee 2020-05-28
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hi,
I just wanted to quickly inform you that I am able to reproduce your problem with icu. I'm getting the same error shared_info::initialize: size of shared memory region changed from 51128 to 40888 and I don't know a solution yet... I'm working on it...
Thanks!
cheers, josch
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
It is still quite hard to give you advice because you don't give us all the information needed to debug your problem.
The way that Samuel Hufen fixed the Windows problem does not require you to disable qt. Did you read Samuel's solution?
it's impossible for anybody to tell you something about "C:\Users\ME\Win64" without you telling us how that directory was involved in whatever you attempted to do
when you write "%~dp0show.exe", you are refering to the variable called %~dp0show but you probably want to use %~dp0 instead?
when you say "opens and closes directly" what do you mean by that? do you see no output at all in your terminal?
and how would a program only be startable via "normal shell" and what even is "normal shell" if not cmd.exe under windows -- the batch interpreter
The normal way to start show is like this:
show.exe/path/to/scans
Depending on where your show.exe is and where your scans are you obviously have to adapt the command accordingly.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
It is still quite hard to give you advice because you don't give us all
the information needed to debug your problem.
The way that Samuel Hufen fixed the Windows problem does not require
you to disable qt. Did you read Samuel's solution?
it's impossible for anybody to tell you something about
"C:\Users\ME\Win64" without you telling us how that directory was
involved in whatever you attempted to do
when you write "%~dp0show.exe", you are refering to the variable
called %~dp0show but you probably want to use %~dp0 instead?
when you say "opens and closes directly" what do you mean by that?
do you see no output at all in your terminal?
and how would a program only be startable via "normal shell" and
what even is "normal shell" if not cmd.exe under windows -- the
batch interpreter
The normal way to start show is like this:
show.exe /path/to/scans
Depending on where your show.exe is and where your scans are you
obviously have to adapt the command accordingly.
Hey,to answer your questions: No, I just skimed Samuel Hufen's answer, because I already dowloaded the compiled binaries, so I didn't really needed his answer. I am just glad, that I can now run the program. I had to format "%~dp0show.exe" in exactly this way, because if there was a space between the Variable and the program's name, cmd was pasting that space into the complete path and failed then finding that path. But it looks like cmd can handle such things. By "opening and closes directly" I mean this: https://youtu.be/5D9vJ_WKgTE I opened cmd, started the batch file, then a secound cmd window opens up and then the main window opens. After that noting happens for approximately 2 - 3 secounds, then the main window and the secound cmd winow closes and the program is finished in the main cmd window without any output. If I call the program directly in the main cmd window and not via a seperate batch file the program is working fine. This is what I meant with "normal shell", to cd to the location, the program is installed, and then start the program in the main cmd window.
To the tests:
So, nothing wants to be tested, I just builded a few projects in the "testing" folder and got no error, so seems that it works fine. The visualising of the 3D Point Cloud also works fine with reduced points and after some optimisation also relative fine and smooth with all points shown. The only thing I mentioned is that the program only uses 30-40% of my CPU and 20-30% of my GPU, even if the program is lagging and should use more CPU/GPU capacity. The program is lagging mostly on moving with the mouse and on animating camerapaths. So the program runs acceptable on my PC.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hi Joel, thank you for your answer! Having watched that video, I have a few questions.
The batch script tries to start show.exe from the same directory as the script itself. But the directory we see here in the video doesn't have show.exe in it. How does that work? Do you have the bin directory in your %PATH%?
Next it's a pitty that one cannot see the content of the terminal window that opens. That terminal window should contain useful error output containing the reason why show.exe fails. You should make it such that the terminal window stays open or otherwise you will not see the error output. Notice that we wrote 3dtk for Linux and we never run show from anything else than a terminal window. Thus, all error and warning messages are printed on the terminal and not shown as a dialog or something.
Lastly, the hunch I have is, that show.exe simply cannot find the shared libraries that it's loading at runtime, specifically the scanio libraries that it needs for the dat dataset. Did you try changing the working directory to the parent directory of show.exe before starting show.exe?
If you have any improvements for 3dtk to make life on windows easier, we will gladly accept your contributions!
Lastly, I recently reworked windows support a lot and am now building with latest vcpkg on visual studio 2017 and 2017 as well as on cygwin and mingw: https://ci.appveyor.com/project/josch/3dtk/builds/32543894
Maybe these improvements are of some help for you.
If you are fighting with the windows cmd.exe because it's a terrible shell (it very much is) then my advice for you would be to use cygwin where you get a proper bash shell to work with.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hey Josch,
At the moment, Some sort of moving on Z Axis via mouse scrolling would be nice and that the program(s) accept german and other special characters such as ä, ü or ö. Also it would be nice to have a GUI, where one can select the data to load and then run show.exe without cmd.
The Questions:
I made a shortcut from my Batch File to get away from searching the batch file in the bin directory, but the batch file is placed in the bin directory, as well as the show.exe, so this should not be the problem. So running the shortcut should obviously run the original program in the bin directory, as I hope.
I now kept cmd open and it told me that the path was only set wrong, after fixing that and some random errors, where show.exe can't find the data, maybe because I started show.exe in a directory with an ä in the path, it works now also via Batch file.
In my opinion, Powershell is a much more anoying shell, because e.g. if you want to run a program and you have to put the path in a string, PowerShell doesn't run the program but printed the string to the program. Well done PowerShell. Or you are not alloed to run any program in your current path, unless you put a .\ before your command. ALso, it alsways prints an extremly long Error just to say, that I typed something wrong. So I rather use cmd instead, which allows me to run programs in the current directory without anything before, run programs elsewhere and don't print endless long Errors.
To cygwin:
I also tried to install that, but all I get is 3h waiting for the installer to download everything and then found nothing to install, so on nearly every file, I got Path not found Error, maybe because of my ü in my username, so I gave that up too.
Yours
Joel
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hi, JoSch,
I am building 3DTK using windows/build.cmd with cmd on Windows 10 (64bit). But, the below error occurs while building 3DTK.
Installingpackagesqlite3[core]:x64-windows-v141...
Installingpackagesqlite3[core]:x64-windows-v141... doneElapsedtimeforpackagesqlite3:x64-windows-v141: 17.17sStartingpackage7/86: qt5-base:x64-windows-v141Buildingpackageqt5-base[core]:x64-windows-v141...
CMakeWarningatscripts/cmake/vcpkg_buildpath_length_warning.cmake:4(message):
qt5-base's buildsystem uses very long paths and may fail on your system.Werecommendmovingvcpkgtoashortpathsuchas'C:\src\vcpkg'orusingthesubstcommand.
CallStack(mostrecentcallfirst):
ports/qt5-base/portfile.cmake:1(vcpkg_buildpath_length_warning)scripts/ports.cmake:90(include)--Figuringoutqttargetmkspec. Targetarchx64--Targetmkspecsetto: win32-msvc--Hostmkspecnotset. Qt's own buildsystem will try to figure out the host systemCMakeWarningatscripts/cmake/vcpkg_buildpath_length_warning.cmake:4(message):
qt5-base's buildsystem uses very long paths and may fail on your system.Werecommendmovingvcpkgtoashortpathsuchas'C:\src\vcpkg'orusingthesubstcommand.
CallStack(mostrecentcallfirst):
ports/qt5-base/cmake/qt_download_submodule.cmake:13(vcpkg_buildpath_length_warning)ports/qt5-base/portfile.cmake:47(qt_download_submodule)scripts/ports.cmake:90(include)--Downloadinghttp://download.qt.io/official_releases/qt/5.12/5.12.8/submodules/qtbase-everywhere-src-5.12.8.tar.xz...
--ExtractingsourceE:/Users/LEE/Documents/slam6d-code-r2223-trunk/slam6d-code-r2223-trunk/build/3rdparty/vcpkg/downloads/qtbase-everywhere-src-5.12.8.tar.xz--Applyingpatchpatches/winmain_pro.patch--Applyingpatchpatches/windows_prf.patch--Applyingpatchpatches/qt_app.patch--Applyingpatchpatches/gui_configure.patch--Applyingpatchpatches/icu.patch--Applyingpatchpatches/xlib.patch--Applyingpatchpatches/Qt5BasicConfig.patch--Applyingpatchpatches/Qt5PluginTarget.patch--Applyingpatchpatches/prl_parser.patch--Applyingpatchpatches/Qt5GuiConfigExtras.patch--UsingsourceatE:/Users/LEE/Documents/slam6d-code-r2223-trunk/slam6d-code-r2223-trunk/build/3rdparty/vcpkg/buildtrees/qt5-base/src/5.12.8-58a5dc6709--Configuringx64-windows-v141-rel--Configuringx64-windows-v141-reldone--NUMBER_OF_PROCESSORSis12--UsingcachedE:/Users/LEE/Documents/slam6d-code-r2223-trunk/slam6d-code-r2223-trunk/build/3rdparty/vcpkg/downloads/win_flex_bison-2.5.16.zip--Buildingx64-windows-v141-relCMakeErroratscripts/cmake/vcpkg_execute_required_process.cmake:72(message):
Commandfailed: E:/Users/LEE/Documents/slam6d-code-r2223-trunk/slam6d-code-r2223-trunk/build/3rdparty/vcpkg/downloads/tools/jom/jom-1.1.3/jom.exe/J12WorkingDirectory: E:/Users/LEE/Documents/slam6d-code-r2223-trunk/slam6d-code-r2223-trunk/build/3rdparty/vcpkg/buildtrees/qt5-base/x64-windows-v141-relErrorcode: 2Seelogsformoreinformation:
E:\Users\LEE\Documents\slam6d-code-r2223-trunk\slam6d-code-r2223-trunk\build\3rdparty\vcpkg\buildtrees\qt5-base\build-x64-windows-v141-rel-out.logE:\Users\LEE\Documents\slam6d-code-r2223-trunk\slam6d-code-r2223-trunk\build\3rdparty\vcpkg\buildtrees\qt5-base\build-x64-windows-v141-rel-err.logCallStack(mostrecentcallfirst):
ports/qt5-base/cmake/install_qt.cmake:91(vcpkg_execute_required_process)ports/qt5-base/portfile.cmake:279(install_qt)scripts/ports.cmake:90(include)Error: Buildingpackageqt5-base:x64-windows-v141failedwith: BUILD_FAILEDPleaseensureyou're using the latest portfiles with `.\vcpkg update`, thensubmitanissueathttps://github.com/Microsoft/vcpkg/issuesincluding:
Package: qt5-base:x64-windows-v141Vcpkgversion: 2020.02.04-nohash-externalAdditionally, attachanyrelevantsectionsfromthelogfilesabove.
vcpkginstallfailed
So, I refered your answer mentioned above. I added -DWITH_QT=OFF to the cmake configuration in the build.cmd file. Then, when I rebuilt the 3DTK, the same error occurs. What should have done more?
Best Regards,
Junehe Lee.
Last edit: Junhee Lee 2020-05-28
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Ok, I am trying to build it again.
When it comes to using slam6d-code-trunk-r2235\slam6d-code-trunk-r2235\windows\build.cmd, the route of the source directory is slam6d-code-trunk-r2235\slam6d-code-r2235-trunk, is it right?
Or, is it <myroot>\slam6d-code-trunk-r2235\slam6d-code-r2235-trunk\windows ?
When I set the source directory as slam6d-code-trunk-r2235\slam6d-code-r2235-trunk and the output directory as slam6d-code-trunk-r2235\slam6d-code-r2235-trunk\build, the build error occurs, every time.
Did you use windows/build.cmd when you were "able to build all packages successfully again on windows 10 with vs 2019" ? </myroot>
Last edit: Junhee Lee 2020-05-30
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Here a concrete example. I have the 3dtk sources in Z:\3dtk. So the build script is in Z:\3dtk\windows\build.cmd. I'm putting the results on C:\ because windows places funny restrictions on drive letters and because of qt. You probably read the error message in your output that says:
CMakeWarningatscripts/cmake/vcpkg_buildpath_length_warning.cmake:4(message):qt5-base's buildsystem uses very long paths and may fail on your system. We recommend moving vcpkg to a short path such as 'C:\src\vcpkg'orusingthesubstcommand.
So using an output directory like slam6d-code-trunk-r2235\slam6d-code-r2235-trunk\build is a very bad idea because that is a very long path which is not supported on windows.
So what I ended up running was:
Z:\3dtk\windows\build.cmdZ:\3dtkC:\slam6dv142
So yes, I am using windows\build.cmd because anything else is pure madness. Without using a batch script, simple typos will ruin your whole day.
If you don't have time for all the headaches that windows causes, just use Linux or MacOS. As you can see on our CI windows works but it's very easy to get wrong and the errors you get don't make sense, are of no use or are really byzantine...
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
All right, thanks for your concrete example. Now I understand why the error occurs every time.
As you recommended, I put the 3dtk sources in E:\slam6d_r2235 and the results in C:\slam6d. Then I did: build.cmd E:\slam6dr2235 C:\slam6d
without -DWITH_QT = OFF in build.cmd.
Finally I could see the solution file 3DTK.sln in C:\slam6d after several hours, while the cmake --build failed remained in the last row on cmd prompt. It is not the same with the contents in your CI (https://ci.appveyor.com/project/josch/3dtk/builds/33191118).
In this situation, I opened 3DTK.sln via Visual Studio 2019 (Windows 10) and tried to build ALL_BUILD project by Debug x64. In this step, I refered to https://sourceforge.net/p/slam6d/discussion/939033/thread/92ceb81f/ . Then the result was:
========== Build : 101 succeeded, 21 failed, 0 new, 0 skipped ==========
I tried to build the solution by Release x64 excluding qtshow project, becuase qtshow project caused error. Then the result was:
========== Rebuild All : 121 succeeded, 0 failed, 6 skipped ==========
I feel something strange.
(1) Shouldn't 3DTK solution file be built by both Debug x64 and Release x64, according to https://sourceforge.net/p/slam6d/discussion/939033/thread/92ceb81f/ ?
(2) After building the 3DTK solution successfully, what should I do to start 3DTK program?
Last edit: Junhee Lee 2020-05-30
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Notice that you only have to put the build result on a short path. The sources can be placed anywhere because their content is only read -- nothing is written into that directory during the build process, thanks to using cmake.
Within these "several hours" you could've also easily set up a Linux VM and then build 3DTK within 10 minutes. ;)
To your questions:
(1) The statement "Debug and Release should both work" in the Link you cite comes from Florian Leutert who is a Windows expert and installed all the dependencies manually himself. In our case, build.cmd only installs the release build of all dependencies with vcpkg so doing a debug build might not work as the debug versions of the dependencies might be missing.
(2) To start the programs, navigate to C:\slam6d\bin and execute programs like show.exe or scan_red.exe with the appropriate arguments. You can find examples in the README.md
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Yes, thanks for your sincere recommendation.
I can run 3DTK on Windows 10 by cmd prompt. I have ever run it on Linux so that I realize that the usage is the same as what on Linux. What a progressive tool 3DTK is!
Thank you again, JoSch.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hello,
I need to install 3DTK on my Windows PC which I need for Unity and I need Unity for my main study Games Engineering. So first I was trying to install it on Windows with the bat Files. The MinGW File didn't work either because cmd does not find the pacman program, which is called several times. The Build.cmd do work, but only if in the whole src and out Directory has no white space in it. But then it fails to download qtbase-everywhere-src-5.11.2.tar.xz becuase QT has removed it from their servers. Only QT 9 and QT 12 are the next available versions. So the build crashes.
So next, I read about WSL. So I googled a bit and find a Ubuntu command prompt. After running and I installing many package, that all seems to be important somehow, I got stuck at downloading Header files for my Processor, so CMake didn't work there either. Then I've installed Homebrew and tried with it. But it now stucks for 3h on Installing libzip, so it also seems to be crashed.
The day before I tried with CMake to build it. This didn't work because CMake didn't find Boost Librarys/Installation. I've tried multiple compilers, but every time the same error. So I downloaded Boost, which was also not in build version. When trying to build Boost, it couldn't find several Header files e.g. ctype.h, which the internet also seem to not know how to change this.
By the way, until that, I was already searching something around 2-3h.
The last thing I could do is installing a virtual machine on my PC and try to build the program in there and then trying to translate it back to my Windows PC, so I can use it normally or, if this doesn't work, install it on the virtual machine and use it there.
Here is my error stacktrace from build.cmd:
Starting package 4/178: qt5-base:x64-windows
Building package qt5-base[core]:x64-windows...
CMake Warning at ports/qt5-base/portfile.cmake:5 (message):
Qt5's buildsystem uses very long paths and may fail on your system.
We recommend moving vcpkg to a short path such as 'C:\src\vcpkg' or using
the subst command.
Call Stack (most recent call first):
scripts/ports.cmake:71 (include)
-- Downloading http://download.qt.io/official_releases/qt/5.11/5.11.2/submodules/qtbase-everywhere-src-5.11.2.tar.xz...
-- Downloading http://download.qt.io/official_releases/qt/5.11/5.11.2/submodules/qtbase-everywhere-src-5.11.2.tar.xz... Failed. Status: 22;"HTTP response code said error"
CMake Error at scripts/cmake/vcpkg_download_distfile.cmake:156 (message):
Call Stack (most recent call first):
ports/qt5-base/portfile.cmake:18 (vcpkg_download_distfile)
scripts/ports.cmake:71 (include)
Error: Building package qt5-base:x64-windows failed with: BUILD_FAILED
Please ensure you're using the latest portfiles with
.\vcpkg update
, thensubmit an issue at https://github.com/Microsoft/vcpkg/issues including:
Package: qt5-base:x64-windows
Vcpkg version: 2018.10.20-nohash
Additionally, attach any relevant sections from the log files above.
vcpkg install failed
Yours
Joel Kühle
Last edit: Joel Kühle 2020-04-22
Hi Joel,
thank you for your feedback!
The qt problem is known and my colleague Michael Bleier is currently working on a fix. But for the assignment you are working on, you actually don't need qt at all, so you can just add
-DWITH_QT=OFF
to the cmake configuration.We never tried WSL or homebrew, so we cannot assist with those.
As you already figured out, installing the dependencies like boost manually is very much prone to error. That's why we have these scripts because simple typos can easily screw up the whole build process. Windows is a royal pain -- you say you spent 2-3 hours on it and I believe you. Myself I spent weeks on making all of this work.
Andreas commented on the downsides of virtual machines but in my experience, with kvm and support for direct rendering (if your graphics card and emulator support this) it is possible to get close to native speed even within a virtual machine.
To move this forward: in the discussion forum, a colleague of yours already seems to have found a way to build everything on windows and will publish their changes soon as well. Maybe those will work for you too? Other than that, my colleague Michael Bleier said that he is currently rebuilding everything on Windows 10 and will commit his changes soon as well.
So I expect this problem to be fixed soon. If not, please do not hesitate to write us again.
Thanks!
cheers, josch
Hey,
thanks for your help. After I added to do not try to download QT, it works until the script wants to download icu, which also failed. So I added that as well. Then after a few more attempts, the directory "C:\Users\ME\Win64" seems to get deleted or do never exist on my PC.
Anyway, I've got the compiled binaries now from a classmate and figured out, that the show.exe is not starting via batch file. I've tried to start it with "start "" "%~dp0show.exe" -s 0 -e 0 %~dp0..\dat\", the program opens and closes directly with no output. Is the command wrong or is the program only startable via normal Shell?
Hi, Joel, and JoSch,
thanks for your mention, because I am suffering from the same issue which is related to icu. When I execute the batch script build.cmd on the prompt on Windows 10 after downloading slam6d-code-r2223-trunk, the error occurs and the building process stops while acquiring MSYS packages.
I execute the build.cmd like this:
build myRoot/slam6d-code-r2223-trunk/slam6d-code-r2223-trunk myRoot/slam6d-code-r2223-trunk/slam6d-code-r2223-trunk\windows\build
since
"Usage: build sourcedir outdir [v14x]"
The cmd says:
Packages (8) bash-4.4.023-2 filesystem-2020.02-2 libzstd-1.4.4-2 mintty-1~3.1.6-1 msys2-runtime-3.1.4-3 pacman-5.2.1-8 pacman-mirrors-20200329-1 zstd-1.4.4-2
Total Download Size: 19.29 MiB
Total Installed Size: 66.50 MiB
Net Upgrade Size: -3.22 MiB
:: Proceed with installation? [Y/n]
:: Retrieving packages...
downloading msys2-runtime-3.1.4-3-x86_64.pkg.tar.xz...
downloading bash-4.4.023-2-x86_64.pkg.tar.xz...
downloading filesystem-2020.02-2-x86_64.pkg.tar.xz...
downloading mintty-1~3.1.6-1-x86_64.pkg.tar.xz...
downloading pacman-mirrors-20200329-1-any.pkg.tar.xz...
downloading libzstd-1.4.4-2-x86_64.pkg.tar.xz...
downloading zstd-1.4.4-2-x86_64.pkg.tar.xz...
downloading pacman-5.2.1-8-x86_64.pkg.tar.xz...
checking keyring...
checking package integrity...
loading package files...
checking for file conflicts...
checking available disk space...
:: Processing package changes...
upgrading msys2-runtime...
upgrading bash...
upgrading filesystem...
upgrading mintty...
upgrading pacman-mirrors...
installing libzstd...
installing zstd...
upgrading pacman...
warning: terminate MSYS2 without returning to shell and check for updates again
warning: for example close your terminal window instead of calling exit
-- Acquiring MSYS2... OK
-- Acquiring MSYS Packages...
0 [main] bash (379456) shared_info::initialize: size of shared memory region changed from 51128 to 40888
CMake Error at scripts/cmake/vcpkg_execute_required_process.cmake:72 (message):
Command failed:<myroot>/slam6d-code-r2223-trunk/slam6d-code-r2223-trunk/windows/build/3rdparty/vcpkg/downloads/tools/msys2/msys64/usr/bin/bash.exe --noprofile --norc -c "pacman -Sy --noconfirm --needed make automake1.15"
Working Directory:<myroot>/slam6d-code-r2223-trunk/slam6d-code-r2223-trunk/windows/build/3rdparty/vcpkg/downloads/tools/msys2
Error code: Access violation
See logs for more information:
<myroute>\slam6d-code-r2223-trunk\slam6d-code-r2223-trunk\windows\build\3rdparty\vcpkg\buildtrees\icu\msys-pacman-x64-windows-v141-err.log</myroute></myroot></myroot>
Call Stack (most recent call first):
scripts/cmake/vcpkg_acquire_msys.cmake:108 (vcpkg_execute_required_process)
ports/icu/portfile.cmake:78 (vcpkg_acquire_msys)
scripts/ports.cmake:90 (include)
I don't understand why it happens so that I keep trying to fix it. My questions are (1) How can I fix it, Josch? And, (2) how did you fix the this problem as Joel said at https://sourceforge.net/p/slam6d/discussion/939032/thread/6170824484/#f92e.
, and (3) Could you explain "Then after a few more attempts" concretely, Joel?
Last edit: Junhee Lee 2020-05-28
Hi,
I just wanted to quickly inform you that I am able to reproduce your problem with icu. I'm getting the same error
shared_info::initialize: size of shared memory region changed from 51128 to 40888
and I don't know a solution yet... I'm working on it...Thanks!
cheers, josch
There were indeed several small problems on windows which I now fixed. Please try again.
It is still quite hard to give you advice because you don't give us all the information needed to debug your problem.
The normal way to start show is like this:
Depending on where your show.exe is and where your scans are you obviously have to adapt the command accordingly.
Are the tests running smooth on windows?
Very best,
Andreas
On 25.04.20 15:04, JoSch wrote:
Hey,to answer your questions:
No, I just skimed Samuel Hufen's answer, because I already dowloaded the compiled binaries, so I didn't really needed his answer. I am just glad, that I can now run the program.
I had to format "%~dp0show.exe" in exactly this way, because if there was a space between the Variable and the program's name, cmd was pasting that space into the complete path and failed then finding that path. But it looks like cmd can handle such things.
By "opening and closes directly" I mean this: https://youtu.be/5D9vJ_WKgTE I opened cmd, started the batch file, then a secound cmd window opens up and then the main window opens. After that noting happens for approximately 2 - 3 secounds, then the main window and the secound cmd winow closes and the program is finished in the main cmd window without any output.
If I call the program directly in the main cmd window and not via a seperate batch file the program is working fine. This is what I meant with "normal shell", to cd to the location, the program is installed, and then start the program in the main cmd window.
To the tests:
So, nothing wants to be tested, I just builded a few projects in the "testing" folder and got no error, so seems that it works fine. The visualising of the 3D Point Cloud also works fine with reduced points and after some optimisation also relative fine and smooth with all points shown. The only thing I mentioned is that the program only uses 30-40% of my CPU and 20-30% of my GPU, even if the program is lagging and should use more CPU/GPU capacity. The program is lagging mostly on moving with the mouse and on animating camerapaths. So the program runs acceptable on my PC.
Hi Joel, thank you for your answer! Having watched that video, I have a few questions.
The batch script tries to start show.exe from the same directory as the script itself. But the directory we see here in the video doesn't have show.exe in it. How does that work? Do you have the bin directory in your %PATH%?
Next it's a pitty that one cannot see the content of the terminal window that opens. That terminal window should contain useful error output containing the reason why show.exe fails. You should make it such that the terminal window stays open or otherwise you will not see the error output. Notice that we wrote 3dtk for Linux and we never run show from anything else than a terminal window. Thus, all error and warning messages are printed on the terminal and not shown as a dialog or something.
Lastly, the hunch I have is, that show.exe simply cannot find the shared libraries that it's loading at runtime, specifically the scanio libraries that it needs for the dat dataset. Did you try changing the working directory to the parent directory of show.exe before starting show.exe?
If you have any improvements for 3dtk to make life on windows easier, we will gladly accept your contributions!
Lastly, I recently reworked windows support a lot and am now building with latest vcpkg on visual studio 2017 and 2017 as well as on cygwin and mingw:
https://ci.appveyor.com/project/josch/3dtk/builds/32543894
Maybe these improvements are of some help for you.
If you are fighting with the windows cmd.exe because it's a terrible shell (it very much is) then my advice for you would be to use cygwin where you get a proper bash shell to work with.
Hey Josch,
At the moment, Some sort of moving on Z Axis via mouse scrolling would be nice and that the program(s) accept german and other special characters such as ä, ü or ö. Also it would be nice to have a GUI, where one can select the data to load and then run show.exe without cmd.
The Questions:
I made a shortcut from my Batch File to get away from searching the batch file in the bin directory, but the batch file is placed in the bin directory, as well as the show.exe, so this should not be the problem. So running the shortcut should obviously run the original program in the bin directory, as I hope.
I now kept cmd open and it told me that the path was only set wrong, after fixing that and some random errors, where show.exe can't find the data, maybe because I started show.exe in a directory with an ä in the path, it works now also via Batch file.
In my opinion, Powershell is a much more anoying shell, because e.g. if you want to run a program and you have to put the path in a string, PowerShell doesn't run the program but printed the string to the program. Well done PowerShell. Or you are not alloed to run any program in your current path, unless you put a .\ before your command. ALso, it alsways prints an extremly long Error just to say, that I typed something wrong. So I rather use cmd instead, which allows me to run programs in the current directory without anything before, run programs elsewhere and don't print endless long Errors.
To cygwin:
I also tried to install that, but all I get is 3h waiting for the installer to download everything and then found nothing to install, so on nearly every file, I got Path not found Error, maybe because of my ü in my username, so I gave that up too.
Yours
Joel
By z-axis you mean the one pointing into your screen, right? You can use the middle mouse button to move along that axis.
I never had problems with umlauts or other non-ascii characters. Can you show a scenario where it causes problems?
If you want a gui for selecting which scan to load then use qtshow instead of show.
Hi, JoSch,
I am building 3DTK using windows/build.cmd with cmd on Windows 10 (64bit). But, the below error occurs while building 3DTK.
So, I refered your answer mentioned above. I added -DWITH_QT=OFF to the cmake configuration in the build.cmd file. Then, when I rebuilt the 3DTK, the same error occurs. What should have done more?
Best Regards,
Junehe Lee.
Last edit: Junhee Lee 2020-05-28
I have bumped the vcpkg and cmake versions and am now able to build all packages successfully again on windows 10 with vs 2019.
Ok, I am trying to build it again.
When it comes to using slam6d-code-trunk-r2235\slam6d-code-trunk-r2235\windows\build.cmd, the route of the source directory is slam6d-code-trunk-r2235\slam6d-code-r2235-trunk, is it right?
Or, is it <myroot>\slam6d-code-trunk-r2235\slam6d-code-r2235-trunk\windows ?
When I set the source directory as slam6d-code-trunk-r2235\slam6d-code-r2235-trunk and the output directory as slam6d-code-trunk-r2235\slam6d-code-r2235-trunk\build, the build error occurs, every time.
Did you use windows/build.cmd when you were "able to build all packages successfully again on windows 10 with vs 2019" ? </myroot>
Last edit: Junhee Lee 2020-05-30
Here a concrete example. I have the 3dtk sources in
Z:\3dtk
. So the build script is inZ:\3dtk\windows\build.cmd
. I'm putting the results onC:\
because windows places funny restrictions on drive letters and because of qt. You probably read the error message in your output that says:So using an output directory like
slam6d-code-trunk-r2235\slam6d-code-r2235-trunk\build
is a very bad idea because that is a very long path which is not supported on windows.So what I ended up running was:
So yes, I am using
windows\build.cmd
because anything else is pure madness. Without using a batch script, simple typos will ruin your whole day.If you don't have time for all the headaches that windows causes, just use Linux or MacOS. As you can see on our CI windows works but it's very easy to get wrong and the errors you get don't make sense, are of no use or are really byzantine...
All right, thanks for your concrete example. Now I understand why the error occurs every time.
As you recommended, I put the 3dtk sources in E:\slam6d_r2235 and the results in C:\slam6d. Then I did:
build.cmd E:\slam6dr2235 C:\slam6d
without -DWITH_QT = OFF in build.cmd.
Finally I could see the solution file 3DTK.sln in C:\slam6d after several hours, while the cmake --build failed remained in the last row on cmd prompt. It is not the same with the contents in your CI (https://ci.appveyor.com/project/josch/3dtk/builds/33191118).
In this situation, I opened 3DTK.sln via Visual Studio 2019 (Windows 10) and tried to build ALL_BUILD project by Debug x64. In this step, I refered to https://sourceforge.net/p/slam6d/discussion/939033/thread/92ceb81f/ . Then the result was:
========== Build : 101 succeeded, 21 failed, 0 new, 0 skipped ==========
I tried to build the solution by Release x64 excluding qtshow project, becuase qtshow project caused error. Then the result was:
========== Rebuild All : 121 succeeded, 0 failed, 6 skipped ==========
I feel something strange.
(1) Shouldn't 3DTK solution file be built by both Debug x64 and Release x64, according to https://sourceforge.net/p/slam6d/discussion/939033/thread/92ceb81f/ ?
(2) After building the 3DTK solution successfully, what should I do to start 3DTK program?
Last edit: Junhee Lee 2020-05-30
Notice that you only have to put the build result on a short path. The sources can be placed anywhere because their content is only read -- nothing is written into that directory during the build process, thanks to using cmake.
Within these "several hours" you could've also easily set up a Linux VM and then build 3DTK within 10 minutes. ;)
To your questions:
(1) The statement "Debug and Release should both work" in the Link you cite comes from Florian Leutert who is a Windows expert and installed all the dependencies manually himself. In our case, build.cmd only installs the release build of all dependencies with vcpkg so doing a debug build might not work as the debug versions of the dependencies might be missing.
(2) To start the programs, navigate to
C:\slam6d\bin
and execute programs likeshow.exe
orscan_red.exe
with the appropriate arguments. You can find examples in theREADME.md
Yes, thanks for your sincere recommendation.
I can run 3DTK on Windows 10 by cmd prompt. I have ever run it on Linux so that I realize that the usage is the same as what on Linux. What a progressive tool 3DTK is!
Thank you again, JoSch.
Hi, JoSch,
have you ever built 3DTK on Windows 10 with visual studio 2013 or 2015 ? Did you succeed ?
Last edit: Junhee Lee 2020-06-07
I did not try that.