Closed blloyd75 closed 8 years ago
@borisblizzard what do you think?
This is actually the correct behavior due to the way our build outputs are organized. When building a final EXE, usually one goes with either using only static or maximum dynamic linkage (some libraries don't have a dynamic option due to the way their code is organized, one example being libvpx), link input directories can easily be specified and it's easier to mix static and dynamic links if needed. The disadvantage is that after switching targets around it requires a cleanup sometimes.
Then if Dynamic versions of libvpx are not valid, should that build always use it's DebugS and ReleaseS builds? It is capable of building a .dll, but the dynamic build for libvpx does not include the link library.
Due to some preprocessors that propagate through all libraries and are used in headers, the Release and Debug are for linking with DLLs, vut they also put out static libs. Hm, I'll see if I can rethink the process. Since there actually problems with mixing DLLs and static libs.
Alright, I changed some things regarding output directories. Now binary output are the same as the intermediate directories and then the files are manually copied into the lib/dll directory from before so linking is made simpler. Switching build configurations from dynamic to static and vice versa does not require any special cleanup anymore.
Sorry for the delay, but after testing this from a clean build, I get the following two errors building for visual studio 2013. Basically, Release (.dll builds) fail with 1>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120\Microsoft.CppCommon.targets(132,5): error MSB3073: The command "xcopy D:\code\theoraplayer_aprilandfriends\bin\Release\Win32\lib\libvpx\Release\libvpx.dll D:\code\theoraplayer_aprilandfriends\bin\Release\Win32\lib\libvpx\Release......\ /Y /V 1>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120\Microsoft.CppCommon.targets(132,5): error MSB3073: xcopy D:\code\theoraplayer_aprilandfriends\bin\Release\Win32\lib\libvpx\Release\libvpx.lib D:\code\theoraplayer_aprilandfriends\bin\Release\Win32\lib\libvpx\Release......\ /Y /V 1>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120\Microsoft.CppCommon.targets(132,5): error MSB3073: :VCEnd" exited with code 4. 1>Done executing task "Exec" -- FAILED. (TaskId:80)
So seems libvpx is still causing the Release and Debug builds to not complete.
Hm, I messed up with the config. These two should always compile as static, even for "dynamic build configurations". Anyway, it's fixed.
For Visual Studio builds: Both Dynamic and Static builds go to the same directory (either Debug or Release).
Since different parameters are used during the build, this can cause issues if switching from DebugS to Debug and not doing a clean before another build. Also, the non-static builds do not create the libvpx.lib to allow usage of libvpx.dll that is created.