Hi mixxx devs,
I have been able to produce a windows executable, however the buildprocess
was not without issues.
I followed the guide on this page:
http://mixxx.org/wiki/doku.php/compiling_on_windows
Trying to build the buildserver repo executing:
build_environment x86 Release
2 libraries, chromaprint and taglib, wouldn’t build because they have
absolute paths in their visual studio project files. After some searching I
found out they are generated by cmake and cmake puts absolute paths in
(visual studio) project files + it makes a call to cmake in the project
files in a custombuild step.
These absolute paths seem unavoidable:
http://www.cmake.org/Wiki/CMake_FAQ#Why_does_CMake_use_full_paths.2C_or_can_I_copy_my_build_tree.3F
So I think the buildscript should generate them and the guide should be
updated to include cmake the programs to install.
I have very little experience using cmake and was glad to find the calls to
generate them in the build_***.bat files. However one of them was not
completely correct:
C:\mixxx\environments\prototype\build\chromaprint-1.1>cmake . -G "Visual
Studio 12 2013" -DWITH_FFTW3=ON
-DFFTW3_FFTW_LIBRARY=c:/mixxx/environments/prototype/lib/libfftw-3.3.dll
-DWITH_AVFFT=OFF -DBUILD_EXAMPLES=OFF
I changed to:
cmake . -G "Visual Studio 12" -DWITH_FFTW3=ON
-DFFTW3_FFTW_LIBRARY=../../lib/libfftw-3.3.lib -DWITH_AVFFT=OFF
-DBUILD_EXAMPLES=OFF
which seems to work for me.
Then I also had an unresolved external symbol linker error in taglib which
I dont quite understand (yet), but was able to work around.
In taglib-1.9.1\taglib\mpeg\id3v2\id3v2frame.cpp there is a dependency on
zlib.h and a call to the function uncompress which causes the linker error.
As far as I could see zlib is specified in the additional dependencies and
points to the correct .lib, not sure what is going wrong there. Though in
stead of going deeper into it, I also noticed the call to the uncompress
function was enclosed with a preprocessor condition:
#if HAVE_ZLIB
…
So I guess it is optional and changed the source in
buildserver\build\taglib-1.9.1\config.h to
/* Defined if you have libz */
#define HAVE_ZLIB 0
after which it compiles without problems.
I searched for each occurance of HAVE_ZLIB and it seems to be used only for
that uncompress function (no compress to match??), and to print a statement
that compression is not used.
So after regenerating and the above workaround, both libraries compile
without error. However I think the lib output/target path in the newly
generated project files is not correct because they are not copied to the
general buildserver/lib folder. I did that manually.
After this, I was able to build/run the mixxx repo without any further
issues.
Though imho it would maybe be nice if the mixxx.exe and needed .dlls where
copied to one folder.
Furthermore I have some additional questions:
I noticed that when I build the buildserver repo for any combination of
platform/config, the library files produced always have the same name/path.
So when I want to try a different platform/config in mixxx how would I go
about it?
I would like to build the 4 different possibilities (i know of) and be done
with it, one way I can think of is to clone it in 4 different folders?
On my previous job they used suffixes like libname_x86_D.lib to
differentiate, and use one build command to produce them all.
When I started I tried to build x64 directly, but when I got errors I went
to the x86 to make sure I was following the guide exaclty. Then I noticed
that the qt libs are compiled but not overwritten in
build\qt-everywhere-opensource-src-4.8.6\lib\.
The other libs I have looked at that use vsxproj files do a clean/rebuild.
To make sure, I ended up deleting the qt folder and rebuild it completely,
it would be nice if there was an easy clean command or something (maybe
there is, but I’m not familiar with the buildsystem used)?
I looked at the buildserver/buildb_qt4.bat and I notice the call to
configure.exe, which I’m guessing controls its compilation, doesnt get the
platform information as a command line option, though at first I got a
linker x86/x64 mismatch error because the libs where not overwritten when I
changed platform, so how does qt know for which platform to build?
Thats it for now :)
Kind Regards,
Emile Vrijdags
------------------------------------------------------------------------------
One dashboard for servers and applications across Physical-Virtual-Cloud
Widest out-of-the-box monitoring support with 50+ applications
Performance metrics, stats and reports that give you Actionable Insights
Deep dive visibility with transaction tracing using APM Insight.
http://ad.doubleclick.net/ddm/clk/290420510;117567292;y
_______________________________________________
Get Mixxx, the #1 Free MP3 DJ Mixing software Today
http://mixxx.org
Mixxx-devel mailing list
Mixxx-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mixxx-devel