How to compile SpeechMe - qt

I am trying to compile the SpeechMe project: http://projects.developer.nokia.com/speechme/wiki so that I can use the voice recognition in another project I want to make.
I have followed all the instructions and downloaded the full sources of Sphinxbase and Pocketsphinx and used them to add all the missing files to the Sphinxbase and Pocketsphinx directories included in SpeechMe. I have compiled them all in the order the wiki says and they all returned: "***Build Complete" but it seems that they did not produce any output files?
I then tried compiling SpeechMe in Qt Creator but it gives me these three errors:
Here is the build log for all configurations: http://sdrv.ms/PxlD6r
Please help, I really don't understand why this is not working!

I'm guessing Carbide should have created those 3 files when compiling but it didn't, any ideas why and what I can do to fix it?
Files must be created inside pocketsphinx tree but they shouldn't be placed in the required location. Most likely you need to find library files and put them into the required folder manually.
Another reason might be that you are compiled a debug version of pocketsphinx while the latest project is looking for a release version of the libraries.

Related

Compiling an rcc file is skipped with cmake --build, but works with make. What could be the reason for this?

I have a larger project in which some *.qrc files are used and compiled using Qt's RCC. The project is configured via CMake as a Unix Makefile project.
When I build the program via make everything works without problems, but when I build via Cmake --build the corresponding files are not compiled. Unfortunately, CMake does not produce any output describing the problem (-verbose option is set). Does anyone have an idea what this could be? Could it be path variables? If so, how can I set them for the build process? What is the best way to debug such a problem?
To add the target I'm using qt5_add_binary_resources
The platform I am using is macOS.

No rule to make target in QtCreator compilation on Windows with LLVM

I need to compile a cocos2dx project on Windows 10 which has some objective-c++ code, and all that using QtCreator. I've managed to set the compilers in the kit to LLVM (so that objective-c++ code can be compiled), as well as change the qmakespec to win32-clang-g++, however, I'm still getting this error when trying to compile:
error: No rule to make target 'C:/Qt/Qt5.12.9/5.12.9/msvc2017_64/lib/libQt5OpenGLd.a', needed by 'debug/libcocos2d.a'. Stop.
The folder in question contains file Qt5OpenGLd.lib, but doesn't have libQt5OpenGLd.a.
How do I fix this? I can provide more info, but I'm not sure what info is relevant.
I had to use win32-clnag-msvc in order to have it compile a .lib file instead of .a file.

Cannot find c:\Users\qt\work\install\lib\Qt5Widgetsd.lib when compiling QtWebEngine examples

I downloaded Qt5.6 VS2013 32bit and try to run the official example of QtWebEngine.
I just followed the instruction but
When linking it gives out an error of
LNK1104 file not found c:\Users\qt\work\install\lib\Qt5Widgetsd.lib.
However, I have no idea of where this path c:\Users\qt\work\install\lib\ comes from.
I did text search in all directories of example folder and no hits other than generated files(makefiles and pdbs).
I also checked system environment variables but no hits.
Furthermore, I checked Qt Creator'r Projects panel and its Build Environment and still no hits.
Did I miss something?
P.S. this error was given out by linking DemoBrowser example of QtWebEngineWidgets pro
The link is generated by qmake when it generates the build scrip from the qt project file (*.pro). It is based from the qmake application path that is generaly installed together with the libraries (check you qt kit setup to change it if needed: Jst browse to qmake.exe application).
Then try regenerate the build script. It should fix the issue.
You may also have issue with installation not being in debug mode; you are trying to use Qt5Widgetsd.lib library instead of the non-debug one Qt5Widgets.lib

Build Qt projects using static build

I have created a program in Qt using Qt Creator. When I open it, the message appears "The program can't start because Qt5Cored.dll and Qt5widgetsx.dll is missing from your computer. Try reinstalling the program to fix this problem."
copy required libraries from you Qt installation to the directory of executable.
Have you really got a static compiled version of Qt? and are you statically compiling your project?... if so your output executable will be around 30-40mb.... and it won't be asking you for dlls.
However it looks like you have a dynamically linked output, in which case you need to find all the DLLs that your projects uses. You can get these from the folder:
<installpath>\Qt\5.5\mingw492_32\bin for example (different if you use linux / msvc)
Keep running the program and grab each dll it complains about... or use somthing like dependency walker (a free executable you can find online) to help determine which DLLs you need.
You probably need (For windows, using mingw):
Qt5Widgets.dll
Qt5Gui.dll
Qt5Core.dll
libwinpthread-1.dll
libstdc++-6.dll
libgcc_s_dw2-1.dll
Or the debug version in your case which end in "d" e.g.: Qt5Core.dll (release), Qt5Cored.dll (debug). Note versions may be different for your installation version. Copy these files next to your executable. OR include <installpath>\Qt\5.5\mingw492_32\bin in your path.
You need to add all the required dlls
C:\Qt\5.2.1\mingw48_32\bin\
to your project. https://forum.qt.io/topic/50705/solved-qt3d-executable-error-qt5cored-dll-is-missing-from-your-computer/2 should solve your problem.

Qt generates multiple .so files - which one to use?

I am learning about shared objects (.so) / dynamic link libraries (.dll). Since I'm on Linux only .so files are relevant. Anyway, when I compile a shared library, I get multiple .so files - most of which are only links. Here is a screenshot:
Then I created another Qt console application project to test this SO. I had set up all the header files, copied every .so file from previous screenshot to this new project and added
LIBS += "libAritmeticnoKodiranjeDLL.so"
to project settings. If I compile the project it goes through OK. But when running my test app I get this error:
./DLLTester: error while loading shared libraries: libAritmeticnoKodiranjeDLL.so.1: cannot open shared object file: No such file or directory
Where is the problem and why do I get so many .so files?
Just do:
LIBS += -lAritmeticnoKodiranjeDLL
The specifics of the libraries prefix ("lib") and suffix (".so") will be taken care of by the linker.
Note how all except one are just symbolic links, and the actual file is the one with most precise version. This is to support different versions of the library, the symbolic links determine which exact version is used when version is not fully defined. If you are installing libs to system library folders, this is kind of important, but if you are just distributing one non-shared version along with your application, then you can use the name without version number.
When running application with custom libraries, you need to add the directory to LD_LIBRARY_PATH environment variable, so runtime linker finds them. See https://stackoverflow.com/search?q=LD_LIBRARY_PATH . For troubleshooting, you can run ldd yourprogram to see what shared libraries are actually loaded, and echo $LD_LIBRARY_PATH will let you make sure LD_LIBRARY_PATH is what you think it is.
I can definitely confirm from my current experience that QtCreator 4.0.3 with Qt 5.7 under Linux (Ubuntu 16.04) when building a shared library (using TEMPLATE = lib) then resulting target is libName.so (when CONFIG += unversioned_libname) or libNAME.so.1.0.0 (when CONFIG unchanged). However an application built with the very same environment links correctly against that library (LIBS += -Lfolder -lNAME) during linking but unfortunately during run-time it requests for linName.so.1 because "Application Output" says error while loading shared libraries: libNAME.so.1: cannot open shared object file: No such file or directory (I can see libName.so.1 in the generated binary of the app but NOWHERE else - not in Make files). I have spent 2 working days to figure this all out. The only way is to manually change the name of generated .so file to fit what application requests.

Resources